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