GCD學習(五) dispatch_barrier_async

先看段代碼async

    dispatch_queue_t concurrentQueue = dispatch_queue_create("my.concurrent.queue", DISPATCH_QUEUE_CONCURRENT);
    dispatch_async(concurrentQueue, ^(){
        NSLog(@"dispatch-1");
    });
    dispatch_async(concurrentQueue, ^(){
        NSLog(@"dispatch-2");
    });
    dispatch_barrier_async(concurrentQueue, ^(){
        NSLog(@"dispatch-barrier"); 
    });
    dispatch_async(concurrentQueue, ^(){
        NSLog(@"dispatch-3");
    });
    dispatch_async(concurrentQueue, ^(){
        NSLog(@"dispatch-4");
    });
dispatch_barrier_async 做用是在並行隊列中,等待前面兩個操做並行操做完成,這裏是並行輸出
dispatch-1,dispatch-2
而後執行
dispatch_barrier_async中的操做,(如今就只會執行這一個操做)執行完成後,即輸出
"dispatch-barrier,
最後該並行隊列恢復原有執行狀態,繼續並行執行
dispatch-3,dispatch-4
相關文章
相關標籤/搜索