pthread和NSthread的记录

  • pthread:
      //创建线程
       pthread_t pthread;
       pthread_create(&pthread, NULL, run, NULL);
    
      void *run(){
        NSLog(@"在子线程中执行!!!!");
        for (int i =1; i < 10; i++) {
            NSLog(@"%d",i);
            sleep(1);
            if (i == 5) {
                //取消线程操作:
                pthread_cancel(pthread);
            }
        }
        return NULL;
      }
    
  • NSThread
    一共有四种创建方式:
    1.alloc方式创建:
    NSThread *thread = [[NSThread alloc]initWithTarget:self selector:@selector(run) object:nil];
    thread.name =@"threadName";//可以设置线程的name,用以区分线程
    thread.threadPriority = 0.6;//设置线程的优先级,优先级越高执行的概率越高
    [self.thread start];//用以启动线程,否则不执行,对应的有一个静态方法:[NSThread exit]退出线程
    

2.detachNewThreadSelector方式创建:

  [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];

3.performSelectorInBackground方式创建:

 //有两种方式
 //创建子线程:
 [self performSelectorInBackground:@selector(run) withObject:nil];
 //回到主线程:
 [self performSelectorOnMainThread:@selector(backMainThread) withObject:nil waitUntilDone:YES];
  • 线程锁
    作用:保证代码能够完整执行,其他线程只能在锁外等待,直到解锁才能执行
    1. NSLock
    NSLock *lock = [[NSLock alloc]init];
    [lock lock];
      //需要保护的代码
      ...
    [lock unlock];
    
    1. @synchronized
    @synchronized (self) {
      //需要保护的代码
      ...
    }
    

你可能感兴趣的:(pthread和NSthread的记录)