同步、異步函數(shù)與串行、并發(fā)隊(duì)列的關(guān)系

同步函數(shù):只能在當(dāng)前線程中執(zhí)行任務(wù),不具備開啟新線程的能力

異步函數(shù):可以在新的線程中執(zhí)行任務(wù),具備開啟新線程的能力

并發(fā)隊(duì)列:可以讓多個任務(wù)并發(fā)執(zhí)行(自動開啟多個線程同時執(zhí)行任務(wù))

串行隊(duì)列:讓任務(wù)按照順序執(zhí)行。

并發(fā)隊(duì)列只能在異步函數(shù)中有效,沒有順序就是異步執(zhí)行有順序就是串行執(zhí)行。

異步函數(shù)+并發(fā)隊(duì)列:會開啟多條線程,任務(wù)并發(fā)執(zhí)行

異步函數(shù)+串行隊(duì)列:會開啟一條線程,任務(wù)串行執(zhí)行

同步函數(shù)+并發(fā)隊(duì)列:不會開啟新線程,任務(wù)串行執(zhí)行

同步函數(shù)+串行隊(duì)列:不會開啟新線程,任務(wù)串行執(zhí)行

結(jié)論:只要是同步函數(shù)不管是什么隊(duì)列都不會開啟線程任務(wù)串行執(zhí)行。

主線程中執(zhí)行同步與異步函數(shù)的情況:

異步函數(shù)+主隊(duì)列:不會開啟線程,所有任務(wù)在主線程中串行執(zhí)行。

同步函數(shù)+主隊(duì)列:死鎖 因?yàn)橹麝?duì)列的任務(wù)必須用主線程執(zhí)行 而主線程在執(zhí)行同步函數(shù)的任務(wù)時是串行的要等到執(zhí)行完這個任務(wù)以后才會去執(zhí)行隊(duì)列中的任務(wù) 造成死鎖。

主隊(duì)列特點(diǎn):如果主隊(duì)列發(fā)現(xiàn)當(dāng)前主線程有任務(wù)執(zhí)行會暫停調(diào)用隊(duì)列中的任務(wù)直到主線程空閑(主隊(duì)列任務(wù)執(zhí)行暫停 主線程完成不了主隊(duì)列的任務(wù) 死循環(huán))

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

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

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