dispatch_queue_t :併發
建立方法:async
dispatch_queue_t queue = dispatch_queue_create("myblockqueue",DISPATCH_QUEUE_CONCURRENT);
DISPATCH_QUEUE_CONCURRENT //併發 DISPATCH_QUEUE_SERIAL //串行
串行的隊列也就是添加進去的一個一個block是按順序執行,好比:spa
dispatch_queue_t queue = dispatch_queue_create("myblockqueue", DISPATCH_QUEUE_SERIAL);
dispatch_async(queue, ^{ sleep(3); NSLog(@"1"); }); dispatch_async(queue, ^{ NSLog(@"2"); });
結果是:線程
1code
2blog
而併發的隊列是:隊列
dispatch_queue_t queue = dispatch_queue_create("myblockqueue", DISPATCH_QUEUE_CONCURRENT);
dispatch_async(queue, ^{ sleep(3); NSLog(@"1"); }); dispatch_async(queue, ^{ NSLog(@"2"); });
結果是get
2class
1queue
還有三種隊列是系統定義的隊列,根據優先級別不一樣有3種:
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); //獲取系統的queue
#define DISPATCH_QUEUE_PRIORITY_HIGH 2 #define DISPATCH_QUEUE_PRIORITY_DEFAULT 0 #define DISPATCH_QUEUE_PRIORITY_LOW (-2)
固然,也能夠獲取主線程隊列