GCD串行併發同步異步基本概念

一般只要使用同步執行,串行隊列對於添加的同步任務會立即執行
GCD中函數都是以dispatch開頭
GCD中,創建隊列的時候決定串行併發,執行的時候決定同步異步。
同步異步決定是否開新線程,串行併發決定開幾個線程。
隊列的選擇:
串行隊列異步執行:開一條線程,順序執行。
效率:不高,執行慢,資源佔用小-》省電。
一般是3G網絡下,對性能要求不高時用
併發隊列異步執行:開啓多條線程,併發執行。
效率:高,執行快,資源消耗大-》費電
網速快,或者需要快速響應且對任務執行順序沒有要求

同步任務:一般只會在併發隊列中需要阻塞後續任務時。因爲必須等待同步任務執行完畢再去執行其他任務。

dispatch調度;queue隊列;sync同步;async異步;concurrent併發;serial串行。
串行隊列:按順序一個一個執行。
併發隊列:同時執行多個任務,創建多個線程。
同步執行:不開新線程,在當前線程執行。
異步執行:開新線程,(把任務放到主線程上時不會開)

//創建一個串行隊列:
//參數:1、隊列標籤2、隊列屬性。例:(”biaoqian”, DISPATCH_QUEUE_SERIAL);

dispatch_queue_t queue = dispatch_queue_create(const char *label, dispatch_queue_attr_t attr)

//創建一個併發隊列:
//參數:1、隊列標籤2、隊列屬性。例:(”biaoqian”, DISPATCH_QUEUE_CONCURRENT);

dispatch_queue_t queue = dispatch_queue_create(const char *label, dispatch_queue_attr_t attr)

//用同步的方式執行任務:
//參數:1、隊列.2、block任務

dispatch_sync(dispatch_queue_t queue, dispatch_block_t block);

實例代碼:

dispatch_sync(quene, ^{
    NSLog(@"%@", [NSThread currentThread]);//獲取線程
    });

//用異步的方式執行任務:
//參數:1、隊列.2、block任務

dispatch_async(dispatch_queue_t queue, dispatch_block_t block);

實例代碼:

dispatch_async(quene, ^{
    NSLaog(@"%@", [NSThread currentThread]);
    });
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章