一、 GCD控制線程數(shù)
1、初始化一個可以接收任務block的隊列
2、初始化一個并行GCD隊列
3、如控制并發(fā)數(shù)是5個,初始化信號量為5
4、將block中異步加入CGD隊列中,在該處加入信號量的控制(感覺還是有問題,加入GCD的異步方法,會產(chǎn)生很多線程)
參考:http://www.itdecent.cn/p/75214bc1bc97
http://www.itdecent.cn/p/5bb4123e415c
http://www.itdecent.cn/p/b4ac982108f3
二、GCD取消任務
注意:所有取消任務的方法,都不能取消正在執(zhí)行的任務
1、使用dispatch_block_cancel
iOS8之后可以調(diào)用dispatch_block_cancel來取消(需要注意必須用dispatch_block_create創(chuàng)建dispatch_block_t)
2、自己使用變量控制任務取消
如設置布爾值,在所有任務block開始處,先判斷布爾值,如果為true,則return
*一般情況,如果有對異步任務有特殊要求,建議使用 NSOperation、NSOperationQueue
參考:http://www.itdecent.cn/p/4b1d77054b35
GCD相關(guān)參考:
底層實現(xiàn):https://blog.csdn.net/passerbysrs/article/details/18563325