上代碼~

dispatch_group
在開啟了多線程執(zhí)行任務(wù)時,若使用了dispatch_group_notify、dispatch_group_enter、dispatch_group_leave,也能有效的保證了等所有的子線程任務(wù)處理完后,有一個處理最后結(jié)果的地方。


dispatch_group_enter:通知group,下面的任務(wù)馬上要放到group中執(zhí)行了。
dispatch_group_leave:通知group,任務(wù)完成了,該任務(wù)要從group中移除了。
這兩種通知可以在多線程間自由穿梭的。
dispatch_semaphore
當(dāng)我們在處理一系列線程的時候,當(dāng)數(shù)量比較大,在以前我們可能會選擇使用NSOperationQueue來處理并發(fā)控制,但如何在GCD中快速的控制并發(fā)呢?其實就是dispatch_semaphore


因為我們設(shè)置的初始值是2 所以在添加了倆個任務(wù)之后,第三個任務(wù)在wait 的位置判斷信號量值已經(jīng)等于0,所以會等待。等上線的延時1秒操作完成之后,會給信號量值加1,才會完成任務(wù)3。