GCD

1.串行隊(duì)列特點(diǎn)

a.以先進(jìn)先出的方式,順序調(diào)度隊(duì)列的任務(wù)

b.無論隊(duì)列所指定的執(zhí)行函數(shù)是同步還是導(dǎo)步,都會(huì)等上一個(gè)任務(wù)執(zhí)行完成之后再執(zhí)行下一個(gè)任務(wù)

dispatch_queue_t ?queue=dispatch_queue_create("zzh",DISPATCH_QUEUE_SERIAL);

2.并發(fā)隊(duì)列特點(diǎn):

a.以先進(jìn)先出的方式,在并發(fā)調(diào)度隊(duì)列中的任務(wù)執(zhí)行

b.如果當(dāng)前調(diào)度的任務(wù)是同步的,會(huì)等待任務(wù)執(zhí)行完成后,才會(huì)去執(zhí)行下一任務(wù)

c.如果當(dāng)前調(diào)度的任務(wù)是異步的執(zhí)行的,只要底層線程池中有可用的線程,就會(huì)馬上去執(zhí)行任務(wù),不需要等待上一個(gè)任務(wù)的完成。

dispatch_queue_t queue=dispatch_queue_create("zzh",?DISPATCH_QUEUE_CONCURRENT);

3.主隊(duì)列特點(diǎn):

a.專門用來調(diào)度主線程任務(wù)的隊(duì)列

b.不會(huì)開啟線程

c.以先進(jìn)先出的方式,在主線程空閑時(shí),才會(huì)調(diào)度隊(duì)列中的任務(wù)在主線程執(zhí)行

d.如果當(dāng)前主線程在執(zhí)行任務(wù),那么無論主隊(duì)列中被添加了什么任務(wù),都不會(huì)被調(diào)度

dispatch_queue_t ?queue =dispatch_get_main_queue();

4.全局隊(duì)列(是系統(tǒng)為了方便程序員開發(fā)提供的,其工作表現(xiàn)與并發(fā)隊(duì)列一致)與并發(fā)隊(duì)列的區(qū)別:

1.全局隊(duì)列:

1.1沒有名稱

1.2無論ARC還是MRC都不需要考慮釋放內(nèi)存的問題

1.3日常開發(fā)建議使用全局隊(duì)列2.并發(fā)隊(duì)列

2.并發(fā)隊(duì)列

2.1有名字,和NSThread的name屬性類似

2.2如果在MRC開發(fā)的時(shí)候,需要使用dispatch_release(q);來釋放相對(duì)的對(duì)象

2.3dispatch_barrier必須使用自定義的并發(fā)隊(duì)列

2.4開發(fā)第三方框架的時(shí)候,建議使用并發(fā)隊(duì)列

dispatch_queue_t ? queue =dispatch_get_global_queue(0,0);




最后編輯于
?著作權(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)容