標籤:des style color io 使用 strong 資料 sp cti
Dispatch Queues
dispatch queues 是基於c機制的一系列自訂任務操作。遵循先進先出的規則。每次只執行一個任務,直到上個任務完成才執行新的任務。相反的,並發的dispatch queue可以啟動多個任務而不用等待其他任務執行完成。
提交給dispatch queue的任務必須是封裝好的方法或者block 對象。dispatch queue是gcd技術的一部分。
Dispatch Sources
dispatch sources是基於c機制的非同步系統事件。一個dispatch source封裝一個特定系統事件類型資訊並且當有事件發生時,給dispatch queue提交指定的block對象或者方法。可以使用dispatch sources來映射如下類型的系統事件:
Timers
Signal handlers
Descriptor-related events
Process-related events
Mach port events
Custom events that you trigger
Dispatch sources 是gcd的一部分。
Operation Queues
operation queue 是同等意義的並發dispathc queuew執行類是NSOperationQueue.然而dispatch queue總是遵循先進先出的規則,operation queues當決定任務執行次序時總是考慮其他因素。這些因素中重要的一個是是否當前的任務依賴其他任務的完成。當定義任務時你指定依賴關係就可以建立比較複雜的執行順序。
提交給operation queue的執行個體必須是NSOperation class執行個體。一個operation 對象是一個objective c對象封裝了你想執行的任務和所有需要的資料。因為nsoperation class是一個抽象類別,所以需要為任務自訂subclasses。
operation對象產生key-value觀察者notifications。
Asynchronous Design Techniques
需要首先考慮是否真的需要實用並發機制。因為這個更複雜更難以調試。如果設計不當反而會降低代碼的運行速度和反應速度。下面就是幾個設計方面的建議供參考。
第一,需要首先列舉出應用程式執行的任務和每個任務對應的資料結構和對象等。如果對象的修改不會影響到其他對象那麼可以並發修改這些對象。
第二,如果更改任務執行順序會改變結果,那麼可能還會使用傳統的串列步驟。如果更改順序不會影響輸出,那麼就應該考慮並發執行任務。而且不用擔心任務過大。
Concurrency and Application Design (二)