您好,登錄后才能下訂單哦!
全稱是Grand Central Dispatch,可譯為“牛逼的中樞調度器”,純C語言,提供了非常多強大的函數。GCD是蘋果公司為多核的并行運算提出的解決方案,GCD會自動利用更多的CPU內核(比如雙核、四核),GCD會自動管理線程的生命周期(創建線程、調度任務、銷毀線程),程序員只需要告訴GCD想要執行什么任務,不需要編寫任何線程管理代碼。
有4個術語比較容易混淆:同步、異步、并發、串行:
同步和異步決定了要不要開啟新的線程
同步:在當前線程中執行任務,不具備開啟新線程的能力
異步:在新的線程中執行任務,具備開啟新線程的能力
并發和串行決定了任務的執行方式
并發:多個任務并發(同時)執行
串行:一個任務執行完畢后,再執行下一個任務
使用代碼測試同步異步的結果:
(1)用異步函數往并發隊列中添加任務 總結:同時開啟三個子線程
(2)用異步函數往串行隊列中添加任務 總結:會開啟線程,但是只開啟一個線程
(3)用同步函數往并發隊列中添加任務 總結:不會開啟新的線程,并發隊列失去了并發的功能
(4)用同步函數往串行隊列中添加任務 總結:不會開啟新的線程
說明:同步函數不具備開啟線程的能力,無論是什么隊列都不會開啟線程;異步函數具備開啟線程的能力,開啟幾條線程由隊列決定(串行隊列只會開啟一條新的線程,并發隊列會開啟多條線程)。
同步函數
(1)并發隊列:不會開線程
(2)串行隊列:不會開線程
異步函數
(1)并發隊列:能開啟N條線程
(2)串行隊列:開啟1條線程
補充:
凡是函數中,各種函數名中帶有create\copy\new\retain等字眼,都需要在不需要使用這個數據的時候進行release。
GCD的數據類型在ARC的環境下不需要再做release。
CF(core Foundation)的數據類型在ARC環境下還是需要做release。
異步函數具備開線程的能力,但不一定會開線程
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。