国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > iOS > 正文

詳解IOS中GCD的使用

2020-02-19 15:53:47
字體:
來源:轉載
供稿:網友

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; i

4.我們平時使用多線程,會經常碰到一種需求:子線程任務處理完成之后,需要主線程更新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的使用,希望對大家有所幫助!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 广州市| 临江市| 惠安县| 策勒县| 徐州市| 克拉玛依市| 保靖县| 时尚| 余干县| 观塘区| 天水市| 武定县| 泾源县| 两当县| 九寨沟县| 宜良县| 宣恩县| 安西县| 南充市| 芷江| 新巴尔虎左旗| 平阴县| 阿拉尔市| 竹山县| 黄平县| 星座| 泰宁县| 顺昌县| 和平区| 罗源县| 云梦县| 济源市| 盐亭县| 开鲁县| 宁陵县| 宜阳县| 鄂托克前旗| 兴城市| 武川县| 商河县| 登封市|