GCD 學習(二)dispatch_queue_create創建Dispatch Queue


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM