你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> 詳解IOS中GCD的應用

詳解IOS中GCD的應用

編輯:IOS開發綜合

 Grand Central Dispatch(GCD)是異步履行義務的技巧之一。普通將運用法式中記敘的線程治理用的代碼在體系級中完成。開辟者只須要界說想履行的義務並追加到恰當的Dispatch Queue中,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<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了。代碼以下:

//我們同時履行幾個異步義務,他們履行完了,我們有時刻還得曉得一下,,怎樣辦呢,這時候候,就得用到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中GCD的應用】的相關資料介紹到這裡,希望對您有所幫助! 提示:不會對讀者因本文所帶來的任何損失負責。如果您支持就請把本站添加至收藏夾哦!

  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved