GCD 整个使用的格式为:
- 先确定
要创建的队列
: (串行 并行)
- 队列中该线程是
同步还是异步执行
线程()
-
执行什么线程
看你需要做什么任务(主线程或者是子线程都是可以的)
/**
分析: 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
网友评论