zoukankan      html  css  js  c++  java
  • 多线程 NSThread 了解

    用NSThread创建子线程的3种方法
     
    //  DYFViewController.m
    //  623-02-pthread
    //
    //  Created by dyf on 14-6-23.
    //  Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved.
    //
     
    #import "DYFViewController.h"
    #import <pthread.h>
     
    @interface DYFViewController ()
     
    @end
     
    @implementation DYFViewController
     
    //// c语言函数
    //void *run(void *data)
    //{
    //    // 1.获取当前的线程
    //    NSThread *cThread = [NSThread currentThread];
    //   
    //    // 2.打印线程
    //    NSLog(@"%@", cThread);
    //   
    //    // 3.h耗时操作
    //    for (int i = 0; i < 9999; i++) {
    //        NSLog(@"%@", cThread);
    //    }
    //
    //    return NULL;
    //}
     
    - (IBAction)btnOnClick {
        // 1.获取当前的线程
        NSThread *cthread = [NSThread currentThread];
         
        NSThread *mt = [NSThread mainThread];
        // 2.打印线程
        NSLog(@"%@", cthread);
         
        NSLog(@"%@", mt);
         
        // 3.执行一线耗时的操作 : 创建一套子线程
        [self threadCreate3];
       
    }
    - (void)run:(NSString *)parma
    {
    //    [NSThread threadPriority];
    //   
    //    [NSThread setThreadPriority:0.55];
        // 取值0-1,默认0.5
        for (int i = 0; i < 9999; i++) {
            NSLog(@"%@---------%@", [NSThread currentThread], parma);
        }
    }
     
    - (void)threadCreate5
    {
        // 分离出的子线程
        [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"2222222"];
    }
    - (void)threadCreate4
    {
        // 分离出的子线程
        [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"2222222"];
    }
     
    /**
     *  NSThread创建方式3:隐世线程创建,并且直接(自动)启动
     */
    - (void)threadCreate3
    {
        [self performSelectorInBackground:@selector(run:) withObject:@"333333"];
    }
     
    /**
     *  创建方式2:创建完线程后自动启动
     */
    - (void)threadCreate2
    {
        // 分离出的子线程
        [NSThread detachNewThreadSelector:@selector(run:) toTarget:self withObject:@"2222222"];
    }
     
    /**
     *  创建方式1:①先创建初始化子线程②再启动
     */
    - (void)threadCreate
    {
        NSThread *thread1 = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"heheh"];
        thread1.name = @"thread1";
        // 开启线程
        [thread1 start];
         
        NSThread *thread2 = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"heheh"];
        thread2.name = @"thread2";
        // 开启线程
        [thread2 start];
         
        NSThread *thread3 = [[NSThread alloc] initWithTarget:self selector:@selector(run:) object:@"heheh"];
        thread3.name = @"33";
        // 开启线程
        [thread3 start];
    }
     
    @end

     利用NSThread在开发中也不常用,了解即可

     
     
  • 相关阅读:
    【C】——sigprocmask 阻塞进程信号
    【C】——setjmp练习
    【程序练习】——交换两数组元素,使之和差最小
    【C】——setvbuf(scanf内存溢出问题)
    【C】——APUE小程序之递归遍历目录
    Java的原始类型(Primitive Type)
    类加载 静态加载
    行政拘留不属于行政强制措施
    行政立法主体
    行政法中三大具体行政行为
  • 原文地址:https://www.cnblogs.com/Cheetah-yang/p/4664138.html
Copyright © 2011-2022 走看看