iOS隊列和任務(wù)

隊列:

一、串行隊列;
二、并行隊列;
隊列負責(zé)任務(wù)的調(diào)度,不負責(zé)任務(wù)的執(zhí)行;

隊列的特點:

  • 先進先出,排在前面的任務(wù)最先執(zhí)行;
  • 串行隊列:任務(wù)按照順序被調(diào)度,前一個任務(wù)不執(zhí)行完畢,隊列不會調(diào)度;
  • 并行隊列:只要有空閑的線程,隊列就會調(diào)度當(dāng)前任務(wù),交給線程去執(zhí)行,不需要考慮前面是否有任務(wù)正在執(zhí)行,只要有線程可以利用,隊列就會調(diào)度任務(wù);
  • 主隊列:專門用來在主線程調(diào)度任務(wù)的隊列,所以主隊列的任務(wù)都在主線程來執(zhí)行,主隊列會隨著程 序的啟動一起創(chuàng)建;
  • 全局隊列:是系統(tǒng)為了方便程序員開發(fā)提供的,其工作表現(xiàn)與并發(fā)隊列一致;
全局隊列跟并行隊列的區(qū)別
1、全局隊列不需要考錄釋放,在需要的地方直接get就可以獲??;
2、在MRC下,并行隊列創(chuàng)建出來后,需要手動釋放(dispatch_release());

任務(wù):

一、同步任務(wù);
  • 不會開啟新的線程,任務(wù)按順序執(zhí)行
二、異步任務(wù);
  • 會開啟新的線程,任務(wù)可以并發(fā)的執(zhí)行

    任務(wù)在線程中執(zhí)行; 
    

隊列和任務(wù)組合

一、串行隊列、同步任務(wù)

image.png
  • 執(zhí)行結(jié)果如下
image.png

結(jié)論:

串行隊列、同步任務(wù):不開啟新線程,任務(wù)依次執(zhí)行(one by one);

二、串行隊列、異步任務(wù)

image.png
  • 執(zhí)行結(jié)果
image.png

結(jié)論:

串行隊列、異步任務(wù):開啟新線程,任務(wù)依次執(zhí)行(one by one);

三、并行隊列、同步任務(wù)

image.png
  • 執(zhí)行結(jié)果
image.png

結(jié)論:

并行隊列、同步任務(wù):不開啟新線程,任務(wù)依次執(zhí)行(one by one);

三、并行隊列、異步任務(wù)

image.png
  • 執(zhí)行結(jié)果
image.png

結(jié)論:

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

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