dispatch_queue_create 用于創(chuàng)建用戶線程隊列朽基∪ú海可以創(chuàng)建Serial/Concurrent Dispatch Queue 兩種隊列殖卑,即串行與并行隊列。
- 創(chuàng)建Serial Dispatch Queue倒源。
dispatch_queue_t serialQueue =
dispatch_queue_create(“com.SerialQueue”, NULL);
可以創(chuàng)建多個串行隊列苛预,串行隊列也可以并行執(zhí)行。決不能隨意的大量生產(chǎn)Serial Dispatch Queue笋熬。
- 創(chuàng)建Concurrent Dispatch Queue
dispatch_queue_t concurrentQueue =
dispatch_queue_create(“com.ConcurrentQueue”,
DISPATCH_QUEUE_CONCURRENT);
Concurrent Dispatch Queue不過創(chuàng)建多少都沒有問題热某,因為Concurrent Dispatch Queue所使用的線程由系統(tǒng)的XNU內(nèi)核高效管理,不會影響系統(tǒng)性能胳螟。
- 內(nèi)存管理 由dispatch_queue_create方法生成的Dispatch Queue并不能由ARC來自動管理內(nèi)存昔馋。可以使用dispatch_release糖耸、dispatch_retain來手動管理(引用計數(shù)式)秘遏。
但在目前看來,所用的OSX-10.8 開啟的ARC已經(jīng)不需要再用dispatch_release()來做管理嘉竟。
4:對于串行隊列邦危,每創(chuàng)建一個串行隊列洋侨,系統(tǒng)就會對應(yīng)創(chuàng)建一個線程,同時這些線程都是并行執(zhí)行的倦蚪,只是在串行隊列中的任務(wù)是串行執(zhí)行的希坚。大量的創(chuàng)建串行隊列會導致大量消耗內(nèi)存,這是不可取的做法陵且。串行隊列的優(yōu)勢在于他是一個線程裁僧,所以在操作一個全局數(shù)據(jù)時候是線程安全的。當想并行執(zhí)行而不發(fā)生數(shù)據(jù)競爭時候可以用并行隊列操作