Concurrency and Application Design (二)

來源:互聯網
上載者:User

標籤: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 (二)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.