最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

詳解IOS中GCD的使用

 更新時間:2016年02月21日 16:01:41   作者:菠蘿沒有汁  
GCD是iOS的一種底層多線程機(jī)制,本文給大家詳細(xì)介紹IOS中GCD的使用,需要的朋友參考下吧

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

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

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

  GCD會自動管理線程的生命周期(創(chuàng)建線程、調(diào)度任務(wù)、銷毀線程)

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

  進(jìn)程:也就是一個正在運(yùn)行的應(yīng)用程序。

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

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

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

//GCD 并行隊列,異步任務(wù):開啟多個線程,同時執(zhí)行。
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);
}
});
//串行隊列,同步任務(wù) :不開啟線程,按順序執(zhí)行
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.我們平時使用多線程,會經(jīng)常碰到一種需求:子線程任務(wù)處理完成之后,需要主線程更新UI。我們?nèi)绾尾拍苤雷泳€程的任務(wù)都完成了。

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

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

//我們同時執(zhí)行幾個異步任務(wù),他們執(zhí)行完了,我們有時候還得知道一下,,怎么辦呢,這時候,就得用到dispatch_group了,如下編代碼這樣弄,到最后執(zhí)行 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(@"開始執(zhí)行1");
});
dispatch_group_async(group, queue, ^{
NSLog(@"開始執(zhí)行2");
});
dispatch_group_async(group, queue, ^{
NSLog(@"開始執(zhí)行3");
});
dispatch_group_notify(group, queue, ^{
NSLog(@"全部執(zhí)行完成,必須在主線程更新UI!!!");
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"主線程更新UI完成。");
});
});

以上內(nèi)容是小編給大家介紹的IOS中GCD的使用,希望對大家有所幫助!

相關(guān)文章

  • 一行代碼實現(xiàn)IOS 3DES加密解密

    一行代碼實現(xiàn)IOS 3DES加密解密

    這篇文章主要介紹了一行代碼實現(xiàn)IOS 3DES加密解密的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • IOS自帶Email的兩種方法實例詳解

    IOS自帶Email的兩種方法實例詳解

    這篇文章主要介紹了IOS自帶Email的兩種方法實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-06-06
  • iOS發(fā)送驗證碼倒計時應(yīng)用

    iOS發(fā)送驗證碼倒計時應(yīng)用

    點擊發(fā)送驗證碼button。倒計時開始,這篇文章就為大家詳細(xì)介紹了iOS發(fā)送驗證碼倒計時應(yīng)用的實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-12-12
  • IOS開發(fā)仿微信右側(cè)彈出視圖實現(xiàn)

    IOS開發(fā)仿微信右側(cè)彈出視圖實現(xiàn)

    這篇文章主要介紹了IOS開發(fā)仿微信右側(cè)彈出視圖實現(xiàn)的相關(guān)資料,希望通過本文能幫助到大家,讓大家實現(xiàn)這樣類似的功能,需要的朋友可以參考下
    2017-10-10
  • Objective-C實現(xiàn)身份證驗證的方法示例

    Objective-C實現(xiàn)身份證驗證的方法示例

    這篇文章主要給大家分享了Objective-C實現(xiàn)身份證驗證的方法,文中給出了詳細(xì)的示例代碼,對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • IOS開發(fā) UIAlertController詳解及實例代碼

    IOS開發(fā) UIAlertController詳解及實例代碼

    這篇文章主要介紹了 IOS開發(fā) UIAlertController詳解及實例代碼的相關(guān)資料,需要的朋友可以參考下
    2016-12-12
  • 詳解使用ISO鏡像搭建私有yum源

    詳解使用ISO鏡像搭建私有yum源

    這篇文章主要介紹了詳解使用ISO鏡像搭建私有yum源,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • iOS 控件封裝(又名擰螺絲)之排序按鈕的開發(fā)

    iOS 控件封裝(又名擰螺絲)之排序按鈕的開發(fā)

    排序按鈕是實際開發(fā)中比較常見的一種控件,這篇文章主要介紹了iOS 開發(fā)之排序按鈕,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • iOS Tabbar中間添加凸起可旋轉(zhuǎn)按鈕功能

    iOS Tabbar中間添加凸起可旋轉(zhuǎn)按鈕功能

    最近的項目中有需求在tabbar中間添加凸起按鈕,并且點擊時按鈕要旋轉(zhuǎn),看了仿斗魚的凸起,點擊后是present出來View,這篇文章主要介紹了iOS Tabbar中間添加凸起可旋轉(zhuǎn)按鈕,需要的朋友可以參考下
    2017-12-12
  • iOS實現(xiàn)無限循環(huán)滾動的TableView實戰(zhàn)教程

    iOS實現(xiàn)無限循環(huán)滾動的TableView實戰(zhàn)教程

    這篇文章主要給大家介紹了關(guān)于iOS實現(xiàn)無限循環(huán)滾動的TableView的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-05-05

最新評論

石景山区| 泰来县| 铜梁县| 成都市| 安龙县| 靖边县| 化州市| 乐昌市| 应城市| 西盟| 博乐市| 美姑县| 宁明县| 湖口县| 崇义县| 资阳市| 两当县| 岳池县| 唐山市| 荥阳市| 南江县| 长寿区| 尚志市| 许昌市| 东兰县| 牙克石市| 锦州市| 罗甸县| 临朐县| 家居| 寿阳县| 新邵县| 泾阳县| 台东市| 河津市| 莱西市| 休宁县| 修水县| 昌宁县| 新丰县| 双柏县|