GCD學習(五) dispatch_barrier_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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM