dispatch_group

来源:互联网 发布:sql注入的防御 编辑:程序博客网 时间:2024/06/05 00:52

把一组任务提交到队列中,这些队列可以不相关,然后坚挺这组任务完成的事件。
几个用到的函数
1、dispatch_group_create创建一个调度任务组
func dispatch_group_create() -> dispatch_group_t!


2、dispatch_group_async 把一个任务异步提交到任务组里
func dispatch_group_async(_ group: dispatch_group_t!,   _ queue: dispatch_queue_t!, _ block: dispatch_block_t!)


参数: group 提交到的任务组,这个任务组的对象会一直持续到任务组执行完毕
        queue 提交到的队列,任务组里不同任务的队列可以不同
        block 提交的任务




3、dispatch_group_enter/dispatch_group_leave
func dispatch_group_enter(_ group: dispatch_group_t!)func dispatch_group_leave(_ group: dispatch_group_t!)
这两个方法显示的讲任务组中的任务未执行完毕的任务数目加减1,这种方式用在不使用dispatch_group_async来提交任务,注意:这两个函数要配合使用,有enter要有leave,这样才能保证功能完整实现。也可以用这对函数来让一个闭包关联多个Group


4、dispatch_group_notify 用来监听任务组事件的执行完毕
func dispatch_group_notify(_ group: dispatch_group_t!,                         _ queue: dispatch_queue_t!,                         _ block: dispatch_block_t!)
参数: group监听的任务组
queue 执行完毕的这个闭包所在的队列
block 执行完毕所响应的任务
5、dispatch_group_wait 设置等待时间,在等待时间结束后,如果还没有执行完任务组,则返回。返回0代表执行成功,非0则执行失败
long dispatch_group_wait ( dispatch_group_t group, dispatch_time_t timeout );
0 0
原创粉丝点击