GCD串行并行隊(duì)列 與 同步異步執(zhí)行的各種組合 及要點(diǎn)分析

1、異步函數(shù)和并行隊(duì)列

注意:這些任務(wù)都是在創(chuàng)建完之后才執(zhí)行的。異步函數(shù)+并發(fā)隊(duì)列,可以新建線程,各線程也是并發(fā)執(zhí)行的。

執(zhí)行結(jié)果為 ? 不固定

2、同步函數(shù)+并發(fā)隊(duì)列

注意:這些任務(wù)都是創(chuàng)建一個(gè)就立馬執(zhí)行,執(zhí)行完才創(chuàng)建下一個(gè),因?yàn)槭峭胶瘮?shù),所以不新建線程,只要是同步函數(shù),就不會(huì)新建線程。

并發(fā)隊(duì)列與否,并不影響同步函數(shù)的創(chuàng)建,因?yàn)楸旧砭筒荒芏鄤?chuàng)建線程,也就不存在并發(fā)。


3、異步函數(shù)+串行隊(duì)列

注意:這個(gè)搭配可以新建線程,但是因?yàn)槭谴嘘?duì)列,所以實(shí)際上也只是開了一條新線程,做完一個(gè),再做另一個(gè)。

4、同步函數(shù)+串行隊(duì)列

注意:這樣既不會(huì)開新線程,也是串行執(zhí)行的。


5、在主隊(duì)列中,用異步函數(shù)創(chuàng)建任務(wù)

注意:因?yàn)橹麝?duì)列是串行隊(duì)列,所以和異步函數(shù)+串行隊(duì)列的搭配是一樣的,而且是在主線程執(zhí)行的。因?yàn)橹灰拥街麝?duì)列,就一定是加載主線程。不論是同步還是異步。


6、在主隊(duì)列用同步函數(shù)創(chuàng)建任務(wù),是會(huì)卡住的


7、還有一種dispatch嵌套也會(huì)卡死 ?如果把隊(duì)列改成并發(fā)隊(duì)列就不會(huì)卡死。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容