歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> iOS 並行編程之Grand Central Dispatch(GCD)使用

iOS 並行編程之Grand Central Dispatch(GCD)使用

日期:2017/3/1 10:07:18   编辑:Linux編程

GCD是Grand Central Dispatch的縮寫。其包含了語言特性、runtime libraries以及提供系統級、綜合提高的系統增強功能在iOS和OSX 系統上多核的硬件來支持並行執行代碼。GCD會負責創建線程和調度執行你寫的功能代碼。系統直接提供線程管理,比應用添加線程更加高效,因此使用GCD能夠帶來很多好處,例如使用簡單、而且更加高效,允許你同步或者一部執行任意的代碼block。但是使用它也必須注意一些問題,由於其實現是基於c語言的API,因此沒有異常捕獲、異常處理機制,所以它不能捕獲高層語言產生的異常。使用GCD時必須在將block提交到dispatch queue中之前捕獲所有異常,並解決所有異常。

說到底,GCD就是系統來幫用戶來管理線程,而不需要再編寫線程代碼。程序員只需要專心編寫執行某項功能的代碼,添加到block或方法(函數)中,然後可以有下面兩種方式來處理block或方法(函數)。

1.直接將block加入到dispatch queues,

2.將Dispatch source封裝為一個特定類型的系統事件,當系統事件發生時提交一個特定的block對象或函數到dispatch queue,

然後,Dispatch queue 按先進先出的順序, 串行或並發地執行任務。

這裡,Dispatch queue是一個基於C的執行自定義任務機制,而Dispatch source是基於C的系統事件異步處理機制,一般Dispatch source封裝一個特定類型的系統事件,該事件作為某個特定的block對象或函數提交到Dispatch queue中的前提條件。Dispatch source可以監控的系統事件類型有:

 定時器

 信號處理器

描述符相關的事件

進程相關的事件

 Mach port事件

 你觸發的自定義事件

而對於Dispatch Queues,其可以分為三種:

 串行Queue

 並發隊列

 main dispatch queue

如果使用 dispatch queue,與執行相同功能的多線程相比,最直接的優點是簡單,不用編寫線程創建和管理的代碼,讓你集中精力編寫實際工作的代碼。另外系統管理線程更加高效,並且可以動態調控所有線程。

Copyright © Linux教程網 All Rights Reserved