block用法總結(隨時更新)

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)

固然,也能夠獲取主線程隊列

相關文章
相關標籤/搜索