ios线程概念运用

作者: Dayu大鱼 | 来源:发表于2016-07-19 10:46 被阅读45次

GCD 整个使用的格式为:

  1. 先确定要创建的队列: (串行 并行)
  2. 队列中该线程是同步还是异步执行线程()
  3. 执行什么线程看你需要做什么任务(主线程或者是子线程都是可以的)
 /**
     
     分析: 1,2 在子线程顺序执行->串行队列,异步执行
     */
    
    //创建串行队列
    dispatch_queue_t serialQueue=dispatch_queue_create("serialQueue", DISPATCH_QUEUE_SERIAL);
    dispatch_async(serialQueue, ^{
        [self task:1];
        [self task:2];
        
    });
    
    //完成1 2 之后通知主线程3 4 并顺序执行
    
    dispatch_async(serialQueue, ^{
       dispatch_async(dispatch_get_main_queue(), ^{
           [self task:3];
       });
        
        dispatch_async(dispatch_get_main_queue(), ^{
            [self task:4];
        });
    });
    
    
    
}

-(void)task:(int)number {
    NSLog(@"%@  task  %d ",[NSThread currentThread],number);
}

运行结果为:
2016-07-19 10:37:20.585 gcd综合练习[5190:2615643] <NSThread: 0x7faa12d0e380>{number = 2, name = (null)}  task  1 
2016-07-19 10:37:20.585 gcd综合练习[5190:2615643] <NSThread: 0x7faa12d0e380>{number = 2, name = (null)}  task  2 
2016-07-19 10:37:20.585 gcd综合练习[5190:2615606] <NSThread: 0x7faa12d06860>{number = 1, name = main}  task  3 
2016-07-19 10:37:20.586 gcd综合练习[5190:2615606] <NSThread: 0x7faa12d06860>{number = 1, name = main}  task  4 

相关文章

网友评论

    本文标题:ios线程概念运用

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