一、栅栏函数(用于同步执行的block代码块)
1.同步栅栏函数
dispatch_barrier_sync(dispatch_queue_tqueue,dispatch_block_tblock);
特点:
*栅栏函数会在之前的任务都结束后才开始执行
*栅栏函数结束之后才会执行栅栏函数下一行代码,栅栏函数结束之前,下一行代码不会执行(不会把后面的任务添加到队列中,只有等到栅栏函数结束后,才会把任务添加到队列中并执行任务)
2.异步栅栏函数
dispatch_barrier_async(dispatch_queue_tqueue,dispatch_block_tblock);
特点:
*栅栏函数会在之前的任务都结束后才会执行
*栅栏函数结束之后才会才会执行栅栏函数后面的任务,栅栏函数结束之前,后面的任务代码依然执行,只是把任务添加到队列中,但不会执行任务,只有等栅栏函数结束后才会执行任务
二、线程组
1.全局队列下的线程组 dispatch_group_async内部封装了dispatch_group_enter和dispatch_group_leave
```
-(void)group{
// 1.创建任务队列组
dispatch_group_t group = dispatch_group_create();
// 2.创建全局队列
dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
// 3.把任务添加到队列组中 (用于同步执行的block代码块)
dispatch_group_async(group, globalQueue, ^{
NSLog(@"执行任务1");
});
dispatch_group_async(group, globalQueue, ^{
NSLog(@"执行任务2");
});
dispatch_group_async(group, globalQueue, ^{
NSLog(@"执行任务3");
});
dispatch_group_notify(group, globalQueue, ^{
NSLog(@"任务1、2、3执行完之后才执行的任务%@",[NSThread currentThread]); dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"刷新UI的操作%@",[NSThread currentThread]);
});
});
}
2.自定义并发队列下的线程组
-(void)group2{
// 1.创建任务队列组
dispatch_group_t group = dispatch_group_create();
// 2.创建自定义并发队列
dispatch_queue_t customQueue = dispatch_queue_create("customQueue", DISPATCH_QUEUE_CONCURRENT);
// 3.把任务加入队列组中 (用于异步执行的block代码块)
dispatch_group_enter(group);
dispatch_async(customQueue, ^{
NSLog(@"执行任务1");
dispatch_group_leave(group);
});
dispatch_group_enter(group);
dispatch_async(customQueue, ^{
NSLog(@"执行任务2");
dispatch_group_leave(group);
});
dispatch_group_enter(group);
dispatch_async(customQueue, ^{
NSLog(@"执行任务3");
dispatch_group_leave(group);
});
dispatch_group_notify(group, customQueue, ^{
NSLog(@"任务1、2、3执行完之后才执行的任务%@",[NSThread currentThread]);
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"刷新UI的操作%@",[NSThread currentThread]);
});
});
// dispatch_group_wait(group, DISPATCH_TIME_FOREVER);
// * DISPATCH_TIME_NOW 前面任务为执行完之前就会执行后面的代码
// * DISPATCH_TIME_FOREVER 等待前面的任务都执行完之后,才会执行下一行代码 // NSLog(@"我是🔥🔥🔥🔥🔥🔥");
}
推荐文章:
https://www.jianshu.com/p/c3edd6aa75a2
https://www.jianshu.com/p/a5048100e843
https://www.jianshu.com/p/3617310137ee
网友评论