摘錄於: http://zhuyanfeng.com/archives/3042
dispatch_queue_create 用於創建用戶線程隊列。可以創建Serial/Concurrent Dispatch Queue 兩種隊列,即串行與並行隊列。
1. 創建Serial Dispatch Queue。
dispatch_queue_t serialQueue =
dispatch_queue_create(“com.SerialQueue”, NULL);
可以創建多個串行隊列,串行隊列也可以並行執行。決不能隨意的大量生產Serial Dispatch Queue。
2. 創建Concurrent Dispatch Queue
dispatch_queue_t concurrentQueue =
dispatch_queue_create(“com.ConcurrentQueue”,
DISPATCH_QUEUE_CONCURRENT);
Concurrent Dispatch Queue不過創建多少都沒有問題,因為Concurrent Dispatch Queue所使用的線程由系統的XNU內核高效管理,不會影響系統性能。
3. 內存管理 由dispatch_queue_create方法生成的Dispatch Queue並不能由ARC來自動管理內存。可以使用dispatch_release、dispatch_retain來手動管理(引用計數式)。
但在目前看來,所用的OSX-10.8 開啟的ARC已經不需要再用dispatch_release()來做管理。
4:對於串行隊列,每創建一個串行隊列,系統就會對應創建一個線程,同時這些線程都是並行執行的,只是在串行隊列中的任務是串行執行的。大量的創建串行隊列會導致大量消耗內存,這是不可取的做法。串行隊列的優勢在於他是一個線程,所以在操作一個全局數據時候是線程安全的。當想並行執行而不發生數據競爭時候可以用並行隊列操作