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