GCD基础总结三

上代码~


dispatch_group

在开启了多线程执行任务时,若使用了dispatch_group_notify、dispatch_group_enter、dispatch_group_leave,也能有效的保证了等所有的子线程任务处理完后,有一个处理最后结果的地方。

GCD基础总结三_第1张图片

dispatch_group_enter:通知group,下面的任务马上要放到group中执行了。

dispatch_group_leave:通知group,任务完成了,该任务要从group中移除了。

这两种通知可以在多线程间自由穿梭的。


dispatch_semaphore

当我们在处理一系列线程的时候,当数量比较大,在以前我们可能会选择使用NSOperationQueue来处理并发控制,但如何在GCD中快速的控制并发呢?其实就是dispatch_semaphore

GCD基础总结三_第2张图片


因为我们设置的初始值是2 所以在添加了俩个任务之后,第三个任务在wait 的位置判断信号量值已经等于0,所以会等待。等上线的延时1秒操作完成之后,会给信号量值加1,才会完成任务3。

你可能感兴趣的:(GCD基础总结三)