GCD的應用程序描述的線程管理代碼是在系統級實現的,開發人員只需要定義他們想要執行的任務,并將其附加到適當的Dispatch Queue執行即可,下面是詳解IOS中GCD的使用,跟著武林技術頻道小編帶你來了解一下吧!
詳解IOS中GCD的使用
1. GCD是蘋果公司為多核的并行運算提出的解決方案
GCD會自動利用更多的CPU內核(比如雙核、四核)
GCD會自動管理線程的生命周期(創建線程、調度任務、銷毀線程)
程序員只需要告訴GCD想要執行什么任務,不需要編寫任何線程管理代碼
進程:也就是一個正在運行的應用程序。
線程:進程中的某一條完整的執行路徑。一個進程可以有多個線程,至少有一個線程,即主線程。在iOS開發中,所有涉及UI界面的,必須在主線程中更新。
2. GCD的工作原理:讓程序平行排隊,根據可用的處理資源,安排他們在任何可用的處理器上執行任務
3. 串行隊列,并行隊列,同步任務,異步任務。 異步任務會開辟線程:異步任務在串行隊列只開啟一個子線程,異步任務在并行隊列開啟多個子線程。
//GCD 并行隊列,異步任務:開啟多個線程,同時執行。dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_async(queue, ^{for (int i =0; i4.我們平時使用多線程,會經常碰到一種需求:子線程任務處理完成之后,需要主線程更新UI。我們如何才能知道子線程的任務都完成了。
當我們使用串行隊列時,只需將最后的回調主線程任務添加在所有任務的最后,順序執行,便可回調。 但是當我們使用并行隊列時候,就無法知道什么時候完成所有的子線程任務,
這時候,就得用到dispatch_group了。代碼如下:
//我們同時執行幾個異步任務,他們執行完了,我們有時候還得知道一下,,怎么辦呢,這時候,就得用到dispatch_group了,如下編代碼這樣弄,到最后執行 dispatch_group_notify ,便可dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);dispatch_group_t group = dispatch_group_create();dispatch_group_async(group, queue, ^{NSLog(@"開始執行1");});dispatch_group_async(group, queue, ^{NSLog(@"開始執行2");});dispatch_group_async(group, queue, ^{NSLog(@"開始執行3");});dispatch_group_notify(group, queue, ^{NSLog(@"全部執行完成,必須在主線程更新UI!!!");dispatch_async(dispatch_get_main_queue(), ^{NSLog(@"主線程更新UI完成。");});});以上內容是武林技術頻道小編給大家介紹的詳解IOS中GCD的使用,希望對大家有所幫助!
新聞熱點
疑難解答