上代码~
dispatch_group
在开启了多线程执行任务时,若使用了dispatch_group_notify、dispatch_group_enter、dispatch_group_leave,也能有效的保证了等所有的子线程任务处理完后,有一个处理最后结果的地方。
dispatch_group_enter:通知group,下面的任务马上要放到group中执行了。
dispatch_group_leave:通知group,任务完成了,该任务要从group中移除了。
这两种通知可以在多线程间自由穿梭的。
dispatch_semaphore
当我们在处理一系列线程的时候,当数量比较大,在以前我们可能会选择使用NSOperationQueue来处理并发控制,但如何在GCD中快速的控制并发呢?其实就是dispatch_semaphore
因为我们设置的初始值是2 所以在添加了俩个任务之后,第三个任务在wait 的位置判断信号量值已经等于0,所以会等待。等上线的延时1秒操作完成之后,会给信号量值加1,才会完成任务3。
网友评论