GCD 學習(二)dispatch_queue_create建立Dispatch Queue

摘錄於: 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:對於串行隊列,每建立一個串行隊列,系統就會對應建立一個線程,同時這些線程都是並行執行的,只是在串行隊列中的任務是串行執行的。大量的建立串行隊列會致使大量消耗內存,這是不可取的作法。串行隊列的優點在於他是一個線程,因此在操做一個全局數據時候是線程安全的。當想並行執行而不發生數據競爭時候能夠用並行隊列操做 內存管理

相關文章
相關標籤/搜索