1、什么是GCD
全稱是,純C語言編寫,提供非常多強(qiáng)大的函數(shù)。是目前蘋果官網(wǎng)推薦的多線程開發(fā)方法,NSOperation便是基于GCD的封裝。
2、GCD的優(yōu)勢所在
(1)為多核的并行運(yùn)算提出了解決方法
(2)GCD會自動利用更多的CPU內(nèi)核,比如雙核、四核
(3)GCD自動管理線程的生命周期(創(chuàng)建線程、調(diào)度任務(wù)、銷毀線程)
(4)程序員只需要告訴GCD想要執(zhí)行什么任務(wù),不需要編寫任何線程管理代碼。
3、GCD中有兩個核心概念
(1)任務(wù):執(zhí)行什么操作
(2)隊(duì)列:用來存放任務(wù)
4、隊(duì)列可以分為兩大類型
(1)串行隊(duì)列(Serial
Dispatch Queue):只能有一個線程,加入到隊(duì)列中的操作按添加順序依次執(zhí)行,一個任務(wù)執(zhí)行完畢才能執(zhí)行另一個任務(wù)。
(2)并發(fā)隊(duì)列(Concurrent
Dispatch Queue):可以有多個線程,操作進(jìn)來以后他會將這些線程安排在可用的處理器上,同時保證先進(jìn)來的任務(wù)優(yōu)先處理。
(3)還有一個特殊的隊(duì)列就是主隊(duì)列,主隊(duì)列中永遠(yuǎn)只有一個線程-主線程用來執(zhí)行主線程的操作任務(wù)
5、采用GCD做多線程,可以抽象為兩步:
(1)找到隊(duì)列
(2)在隊(duì)列中用同步或者異步的方法執(zhí)行任務(wù)
6、執(zhí)行隊(duì)列中任務(wù)的兩種方式
(1)同步:只能在當(dāng)前線程執(zhí)行任務(wù),不具備開啟新線程的能力
(2)異步:可以在新的線程執(zhí)行任務(wù),具備開啟新線程的能力
7、GCD創(chuàng)建的線程任務(wù)有四種執(zhí)行方式
(1)串行任務(wù)同步執(zhí)行
(2)串行任務(wù)異步執(zhí)行
(3)并行任務(wù)同步執(zhí)行
(4)并行任務(wù)異步執(zhí)行