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

詳解IOS中GCD的使用

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

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

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

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

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

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

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

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

2. GCD的工作原理:讓程序平行排隊(duì),根據(jù)可用的處理資源,安排他們?cè)谌魏慰捎玫奶幚砥魃蠄?zhí)行任務(wù)

3. 串行隊(duì)列,并行隊(duì)列,同步任務(wù),異步任務(wù)。 異步任務(wù)會(huì)開(kāi)辟線(xiàn)程:異步任務(wù)在串行隊(duì)列只開(kāi)啟一個(gè)子線(xiàn)程,異步任務(wù)在并行隊(duì)列開(kāi)啟多個(gè)子線(xiàn)程。

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

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

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

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

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

相關(guān)文章

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

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

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

    IOS自帶Email的兩種方法實(shí)例詳解

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

    iOS發(fā)送驗(yàn)證碼倒計(jì)時(shí)應(yīng)用

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

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

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

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

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

    IOS開(kāi)發(fā) UIAlertController詳解及實(shí)例代碼

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

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

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

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

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

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

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

    iOS實(shí)現(xiàn)無(wú)限循環(huán)滾動(dòng)的TableView實(shí)戰(zhàn)教程

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

最新評(píng)論

合阳县| 洛南县| 渝中区| 保康县| 偏关县| 阿鲁科尔沁旗| 顺义区| 抚远县| 抚州市| 荥经县| 太仆寺旗| 漯河市| 沙坪坝区| 肇庆市| 扶沟县| 南通市| 苏尼特左旗| 临夏市| 开阳县| 太康县| 和龙市| 读书| 安多县| 班玛县| 石首市| 定远县| 孝义市| 博湖县| 洞口县| 行唐县| 武威市| 蒙城县| 九龙城区| 祁阳县| 沧州市| 米林县| 福安市| 当雄县| 陈巴尔虎旗| 泾源县| 思茅市|