隊列:
一、串行隊列;
二、并行隊列;
隊列負責(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