激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - IOS - 詳解IOS中GCD的使用

詳解IOS中GCD的使用

2021-01-08 14:04菠蘿沒有汁 IOS

GCD是iOS的一種底層多線程機制,本文給大家詳細介紹IOS中GCD的使用,需要的朋友參考下吧

 Grand Central Dispatch(GCD)是異步執行任務的技術之一。一般將應用程序中記述的線程管理用的代碼在系統級中實現。開發者只需要定義想執行的任務并追加到適當的Dispatch Queue中,GCD就能生成必要的線程并計劃執行任務。由于線程管理是作為系統的一部分來實現的,因此可統一管理,也可執行任務,這樣就比以前的線程更有效率。

1. GCD是蘋果公司為多核的并行運算提出的解決方案

  GCD會自動利用更多的CPU內核(比如雙核、四核)

  GCD會自動管理線程的生命周期(創建線程、調度任務、銷毀線程)

  程序員只需要告訴GCD想要執行什么任務,不需要編寫任何線程管理代碼

  進程:也就是一個正在運行的應用程序。

  線程:進程中的某一條完整的執行路徑。一個進程可以有多個線程,至少有一個線程,即主線程。在iOS開發中,所有涉及UI界面的,必須在主線程中更新。

2. GCD的工作原理:讓程序平行排隊,根據可用的處理資源,安排他們在任何可用的處理器上執行任務

3. 串行隊列,并行隊列,同步任務,異步任務。 異步任務會開辟線程:異步任務在串行隊列只開啟一個子線程,異步任務在并行隊列開啟多個子線程。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
//GCD 并行隊列,異步任務:開啟多個線程,同時執行。
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
for (int i =0; i<1000; i++) {
NSLog(@"AAAAA %d",i);
}
});
dispatch_async(queue, ^{
for (int i =0; i<1000; i++) {
NSLog(@"BBBBB %d",i);
}
});
dispatch_async(queue, ^{
for (int i =0; i<1000; i++) {
NSLog(@"CCCCC %d",i);
}
});
//串行隊列,同步任務 :不開啟線程,按順序執行
dispatch_queue_t Cqueue = dispatch_queue_create("queueName", NULL);
dispatch_sync(Cqueue, ^{
for (int i =0; i<1000; i++) {
NSLog(@"DDDDD %d",i);
}
});
dispatch_sync(Cqueue, ^{
for (int i =0; i<1000; i++) {
NSLog(@"EEEEE %d",i);
}
});
dispatch_sync(Cqueue, ^{
for (int i =0; i<1000; i++) {
NSLog(@"FFFFF %d",i);
}
});

4.我們平時使用多線程,會經常碰到一種需求:子線程任務處理完成之后,需要主線程更新UI。我們如何才能知道子線程的任務都完成了。

當我們使用串行隊列時,只需將最后的回調主線程任務添加在所有任務的最后,順序執行,便可回調。 但是當我們使用并行隊列時候,就無法知道什么時候完成所有的子線程任務,

這時候,就得用到dispatch_group了。代碼如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
//我們同時執行幾個異步任務,他們執行完了,我們有時候還得知道一下,,怎么辦呢,這時候,就得用到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的使用,希望對大家有所幫助!

延伸 · 閱讀

精彩推薦
  • IOS詳解iOS中多個網絡請求的同步問題總結

    詳解iOS中多個網絡請求的同步問題總結

    這篇文章主要介紹了詳解iOS中多個網絡請求的同步問題總結,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧...

    liang199111302021-03-15
  • IOSiOS開發之視圖切換

    iOS開發之視圖切換

    在iOS開發中視圖的切換是很頻繁的,獨立的視圖應用在實際開發過程中并不常見,除非你的應用足夠簡單。在iOS開發中常用的視圖切換有三種,今天我們將...

    執著丶執念5272021-01-16
  • IOSiOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果

    這篇文章主要介紹了iOS自定義UICollectionViewFlowLayout實現圖片瀏覽效果的相關資料,需要的朋友可以參考下...

    jiangamh8882021-01-11
  • IOSiOS開發技巧之狀態欄字體顏色的設置方法

    iOS開發技巧之狀態欄字體顏色的設置方法

    有時候我們需要根據不同的背景修改狀態欄字體的顏色,下面這篇文章主要給大家介紹了關于iOS開發技巧之狀態欄字體顏色的設置方法,文中通過示例代碼...

    夢想家-mxj8922021-05-10
  • IOSiOS中MD5加密算法的介紹和使用

    iOS中MD5加密算法的介紹和使用

    MD5加密是最常用的加密方法之一,是從一段字符串中通過相應特征生成一段32位的數字字母混合碼。對輸入信息生成唯一的128位散列值(32個字符)。這篇文...

    LYSNote5432021-02-04
  • IOSiOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)

    iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和

    這篇文章主要介紹了iOS中滑動控制屏幕亮度和系統音量(附加AVAudioPlayer基本用法和Masonry簡單使用)的相關資料,需要的朋友可以參考下...

    CodingFire13652021-02-26
  • IOSiOS中UILabel實現長按復制功能實例代碼

    iOS中UILabel實現長按復制功能實例代碼

    在iOS開發過程中,有時候會用到UILabel展示的內容,那么就設計到點擊UILabel復制它上面展示的內容的功能,也就是Label長按復制功能,下面這篇文章主要給大...

    devilx12792021-04-02
  • IOSiOS實現控制屏幕常亮不變暗的方法示例

    iOS實現控制屏幕常亮不變暗的方法示例

    最近在工作中遇到了要將iOS屏幕保持常亮的需求,所以下面這篇文章主要給大家介紹了關于利用iOS如何實現控制屏幕常亮不變暗的方法,文中給出了詳細的...

    隨風13332021-04-02
主站蜘蛛池模板: 伊人av影院| 日本道中文字幕 | 香蕉久久久久久 | 久草成人在线 | 成人福利视频导航 | 精国产品一区二区三区 | 国产毛片网 | 中国免费黄色 | 91久久国产露脸精品国产护士 | 国产亚洲自拍一区 | 伊人在线 | 日本道中文字幕 | 精品一区二区三区在线观看国产 | 国产精品久久久久久久久久久天堂 | 久久久久夜色精品国产老牛91 | 国产亚洲精品久久久久久久久久 | 亚洲福利在线视频 | 美女亚洲综合 | 欧美成人精品欧美一级 | 一区二区久久 | 午夜国产在线观看 | 日韩精品久久久久久 | 国产精品视频在线免费观看 | 九九热视频免费观看 | 91短视频在线观看 | 欧美日本日韩 | 毛片在线视频免费观看 | 成人羞羞国产免费游戏 | 久久国产不卡 | 男女羞羞视频在线免费观看 | 黄色av免费电影 | 最新国产毛片 | 国产人妖一区二区 | 久久精品免费国产 | 国产亲子伦在线观看 | 56av国产精品久久久久久久 | 香蕉在线看 | 色诱亚洲精品久久久久久 | 精品国产91久久久久久浪潮蜜月 | 欧洲成人精品 | 三级国产三级在线 |