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);
