一狸臣、GCD簡(jiǎn)單介紹
- 什么是GCD
1. 全稱是Grand Central Dispatch轰绵,可譯為“牛逼的中樞調(diào)度器”
2. 純c語言粉寞,提供了非常多強(qiáng)大的函數(shù)
- GCD優(yōu)勢(shì)
GCD是蘋果公司為多核的并行運(yùn)算提出的解決方案
GCD會(huì)自動(dòng)利用更多的CPU內(nèi)核(比如雙核、四核)
GCD會(huì)自動(dòng)管理線程的生命周期(創(chuàng)建線程左腔、調(diào)度任務(wù)唧垦、銷毀線程)
程序員只需要告訴GCD想要執(zhí)行什么任務(wù),不需要編寫任何管理線程代碼
- 任務(wù)和隊(duì)列
GCD有2個(gè)核心概念
(1)任務(wù):執(zhí)行什么操作
(2)隊(duì)列:用力愛存放任務(wù)
GCD的使用就2個(gè)步驟
(1)定制任務(wù)
(2)確定想要做的事情
將任務(wù)添加到隊(duì)列中翔悠,GCD會(huì)自動(dòng)將隊(duì)列中的任務(wù)取出业崖,放到對(duì)應(yīng)的線程中執(zhí)行
提示:任務(wù)的取出遵循隊(duì)列的FIFO原則:先進(jìn)先出,后進(jìn)后出
- 執(zhí)行任務(wù)
1.GCD中有2個(gè)用來執(zhí)行任務(wù)的函數(shù)
說明:把右邊的參數(shù)(任務(wù))提交給左邊的參數(shù)(隊(duì)列)進(jìn)行執(zhí)行
(1)用同步的方式執(zhí)行任務(wù) dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);
參數(shù)說明:
queue:隊(duì)列
block:任務(wù)
(2)用異步的方式執(zhí)行任務(wù) dispatch_async(dispatch_queue_t queue, dispatch_block_t block);
2.同步和異步的區(qū)別
同步:在當(dāng)前線程中執(zhí)行
異步:在另一條線程中執(zhí)行
- 隊(duì)列
隊(duì)列類型
GCD的隊(duì)列分為2大類型
(1)并發(fā)隊(duì)列(Concurrent Dispatch Queue)
可以讓多個(gè)任務(wù)并發(fā)(同時(shí))執(zhí)行(自動(dòng)開啟多個(gè)線程同時(shí)執(zhí)行任務(wù))蓄愁,并發(fā)功能只有在異步(dispatch_async)函數(shù)才有效
(2)串行隊(duì)列 (Serial Dispatch Queue)
讓任務(wù)一個(gè)接一個(gè)的執(zhí)行(1個(gè)任務(wù)執(zhí)行完畢双炕,再執(zhí)行下一個(gè)任務(wù))
補(bǔ)充說明
有4個(gè)術(shù)語比較容易混淆:同步、異步撮抓、并發(fā)妇斤、串行
同步和異步?jīng)Q定了要不要開啟新的線程
同步:在當(dāng)前的線程中執(zhí)行任務(wù),不具備開啟新線程的能力
異步:在新的線程中執(zhí)行任務(wù),具備開啟新線程的能力
并發(fā)和串行決定了任務(wù)的執(zhí)行方式
并發(fā):多個(gè)任務(wù)并發(fā)(同時(shí))執(zhí)行
串行:一個(gè)任務(wù)執(zhí)行完畢之后在執(zhí)行下一個(gè)任務(wù)