一、創(chuàng)建隊(duì)列
//定義
dispatch_queue_create(const char *label, dispatch_queue_attr_t attire);
//示例
dispatch_queue_t mySerialQueue = dispatch_queue_create("com.gcd.queueCreate.mySerialQueue", NULL);
第一個參數(shù)是隊(duì)列名稱,采用域名反轉(zhuǎn)的命名規(guī)則,便于調(diào)試。
-
第二個參數(shù)用于區(qū)分創(chuàng)建串行隊(duì)列還是并行隊(duì)列。
串行隊(duì)列: 傳入 NULL 或 DISPATCH_QUEUE_SERIAL
并行隊(duì)列: 傳入 DISPATCH_QUEUE_CONCURRENT 優(yōu)先級使用的是默認(rèn)優(yōu)先級,即 DISPATCH_QUEUE_PRIORITY_DEFAULT。
二、獲取隊(duì)列
除了通過 dispatch_queue_create 創(chuàng)建隊(duì)列,我們還可以直接獲取由系統(tǒng)標(biāo)準(zhǔn)提供的主隊(duì)列(Main Dispatch Queue)和全局隊(duì)列(Global Dispatch Queue),在多數(shù)時候我們都會去使用系統(tǒng)提供的隊(duì)列。
- 獲取主隊(duì)列(Main Dispatch Queue)
dispatch_queue_t mainQueue = dispatch_get_main_queue();
主隊(duì)列是在主線程中執(zhí)行的隊(duì)列,主線程又常稱為UI線程,所有的UI操作都在這個線程中進(jìn)行,主隊(duì)列是一個串行隊(duì)列。
- 獲取全局隊(duì)列(Global Dispatch Queue)
dispatch_queue_t globalQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
第一個參數(shù)指明隊(duì)列執(zhí)行的優(yōu)先級
DISPATCH_QUEUE_PRIORITY_HIGH ----高優(yōu)先級
DISPATCH_QUEUE_PRIORITY_DEFAULT ---- 默認(rèn)優(yōu)先級
DISPATCH_QUEUE_PRIORITY_LOW ----低優(yōu)先級
DISPATCH_QUEUE_PRIORITY_BACKGROUND ----后臺優(yōu)先級
第二個參數(shù)傳入0,留到以后使用
全局隊(duì)列是并行隊(duì)列,它們被所有的應(yīng)用程序共同使用,由XNU內(nèi)核進(jìn)行管理。
GCD學(xué)習(xí)代碼 如果覺得有用,順便給顆星哦??