美文网首页
pthread和NSthread的记录

pthread和NSthread的记录

作者: 什么的黑夜 | 来源:发表于2016-12-06 15:26 被阅读12次
    • 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的记录

          本文链接:https://www.haomeiwen.com/subject/baxrmttx.html