GCD

1. GCD(不是面向線程對象,面向任務開發)程序員

全稱是Grand Central Dispatch,NB的中樞調度器 / 大中央調度  ——— 任務派發器併發

 純C語言,提供了很是多強大的函數異步

將任務添加到隊列中,選擇恰當的執行函數來執行隊列中的任務,以此開啓線程,保證任務的執行順序async

2. 優點
GCD是蘋果公司爲多核的並行運算提出的解決方案
GCD會自動利用更多的CPU內核(好比雙核、四核)
GCD會自動管理線程的生命週期(建立線程、調度任務、銷燬線程)
程序員只須要告訴GCD想要執行什麼任務,不須要編寫任何線程管理代碼
3. 任務和隊列
(1)隊列:隊列用來存聽任務,隊列遵循(FIFO)先進先出原則;
GCD中ti拱了四種隊列:
串行隊列和併發隊列是須要手動建立的
1>串行隊列:用來存放想要按順序執行的任務
2>併發隊列:用來存放想要同時執行的任務
全局併發隊列和主隊列是系統已經建立好的,不須要手動建立
3>全局併發隊列:做用和併發隊列基本同樣,是系統提供的,不須要手動建立
4>主隊列:用來存放在主線程執行的任務
(2)任務:須要執行的代碼,將任務封裝在block中;一個GCD中的block就是一個任務
(3)執行函數:執行函數和隊列配合使用,來開啓線程,肯定任務的執行順序
  同步函數:不具有開啓線程的能力,在當前線程執行,達到同步的目的
  異步函數:具有開啓線程的能力,可是是否開啓線程還須要和隊列配合使用,達到異步的目的
4. 隊列和執行函數的組合
(1)串行隊列 + 執行函數
同步函數 + 串行隊列:不會開啓新線程,任務按順序執行
異步函數 + 串行隊列:會開啓一條線程,任務按順序執行
(2)併發隊列 + 執行函數
同步函數 + 併發隊列:不會開啓新線程,任務按順序執行
異步函數 + 併發隊列:會開啓多條線程,任務同時執行
(3)主隊列 + 執行函數
同步函數 + 主隊列:卡主主隊列
異步函數 + 主隊列:不會開啓線程,任務在主線程按順序執行
5. 隊列組:保證任務的執行順序
  dispatch_group_t group = dispatch_group_create();
  dispatch_group_async(group,dispatch_get_global_queue(0,0),^{
    // 並行執行的線程一
  });
  dispatch_group_async(group,dispatch_get_global_queue(0,0),^{
    // 並行執行的線程二
  });
  dispatch_group_async(group,dispatch_get_global_queue(0,0),^{
    // 並行執行的線程三
  });
  dispatch_group_notify(group,dispatch_get_global_queue(0,0),^{
    // 結果彙總
  });
相關文章
相關標籤/搜索
本站公眾號
   歡迎關注本站公眾號,獲取更多信息