主線程主隊列
隊列的概念和作用:
隊列不是線程,隊列是用來組織任務(wù)的,將任務(wù)加到隊列中侄榴,任務(wù)會按照加入到隊列中先后順序依次執(zhí)行,如果是同步隊列网沾,會在當(dāng)前線程中執(zhí)行癞蚕,如果是異步隊列,則操作系統(tǒng)會根據(jù)系統(tǒng)資源去創(chuàng)建新的線程去處理隊列中的任務(wù)绅这,線程的創(chuàng)建涣达、維護(hù)和銷毀由操作系統(tǒng)管理,系統(tǒng)會給我做很多優(yōu)化
隊列的分類:
串行隊列:
按照FIFO原則,順序執(zhí)行,先加入隊列中的任務(wù)先執(zhí)行,一個任務(wù)一任務(wù)的順序執(zhí)行度苔,只有等到隊列中上一個任務(wù)完成匆篓,才能執(zhí)行下一個任務(wù)
并行隊列:
任務(wù)是按照加入到隊列中的順序開始執(zhí)行,但任務(wù)完成時的順序是不確定的
隊列和線程的關(guān)系:
在一個線程內(nèi)可能有多個隊列寇窑,這些隊列可能是串行的或者是并行的鸦概,按照同步或者異步的方式工作
異步的,則會開啟新的線程工作
同步的甩骏,會在當(dāng)前線程內(nèi)工作窗市,不會創(chuàng)建新的線程
注意:并行同步隊列,不會創(chuàng)建新的線程而且會是順序執(zhí)行相當(dāng)于串行同步隊列
主線程和主隊列的關(guān)系:
主隊列是主線中的一個串行隊列
所有的和UI的操作(刷新或者點擊按鈕)都必須在主線程中的主隊列中去執(zhí)行
否則無法更新UI
每一個應(yīng)用程序只有唯一的一個主隊列用來update UI
補(bǔ)充一點:如果在主線程中創(chuàng)建自定義隊列(串行或者并行均可),在這個隊列中執(zhí)行同步任務(wù)饮笛,同樣可以更新UI操作咨察,主隊列中可以更新UI,自定義隊列也可以更新UI福青,但自定義隊列的更新UI的前提是在主線程中執(zhí)行同步任務(wù)
作者:小贏一場
鏈接:http://www.reibang.com/p/44d84e275962
來源:簡書
著作權(quán)歸作者所有摄狱。商業(yè)轉(zhuǎn)載請聯(lián)系作者獲得授權(quán),非商業(yè)轉(zhuǎn)載請注明出處无午。