GCD实现线程1,2并行和3串行和4,5串行,4,5是并行。3延时3秒执行。
分析线程时注意⚠️:线程任务通常需要时间,为了便于模拟任务分析通常用sleep(second)函数,代替任务。
题意分析:即3依赖,1,2并行执行完毕;等待3执行完毕,窜行执行4,5;1,2并行对列,异步执行(可以是全局队列);3,4窜行队列,异步执行(可以是主队列)。
使用dispatch_group_notify
- (void)mutiThreadWork {
dispatch_group_t group = dispatch_group_create();
dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
sleep(10);
NSLog(@"1");
});
dispatch_group_async(group, dispatch_get_global_queue(0, 0), ^{
sleep(5);
NSLog(@"2");
});
dispatch_group_notify(group, dispatch_get_global_queue(0, 0), ^{
dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW, 3ull*NSEC_PER_SEC);
dispatch_after(tim