什麼是GCD:大中央調度器
GCD優點:是蘋果專門爲多核的並行運算提供的解決方案,
自動利用CPU內核,自動管理線程生命週期,程序員只需要告訴GCD要執行的任務,不需要編寫任何線程管理代碼。
GCD的核心概念:
任務:要執行什麼操作;
隊列:用來存放任務(先進先出)
GCD中兩個用來執行任務的函數:
1,同步:dispath_sync (在當前線程中執行)
2, 異步: dispath_async (新開一條線程執行)
GCD的隊列可以分爲兩類:
1,併發隊列:可以讓多個任務併發執行(自動開啓多個線程並同時執行任務)(只有在異步函數下才有效)
2,串行隊列:一個任務執行完畢後再執行下一個任務。
同步執行方法:
異步執行方法:
線程間通訊:如何在子線程中跳回主線程(必須在主線程刷新UI)
串行隊列,異步方法:
串行隊列,同步方法:
***********************延時執行*************************
****************************一次性執行****************************
有的時候,我們在開發中,有些代碼,從程序啓動之後,就只希望執行一次!
尤其在單例設計模式中使用非常普遍,在iOS開發中,單例的使用,已經到了“濫用”程度!
*************************調度組***************************
****************死鎖*******************
1,如果主線程上有任務在執行,主隊列不會調度任務。
2,關於GCD Block嵌套,要儘量減少層次,最多不要超過三層。
3,層次越多越複雜,多線程開發的原則:簡單!