gcd 柵欄操作

GCD 的珊欄方法

我們有時需要異步執行兩組操作,而且第一組操作執行完之後,才能開始執行第二組操作。這樣我們就需要一個相當於柵欄一樣的一個方法將兩組異步執行的操作組給分割起來,當然這裏的操作組裏可以包含一個或多個任務。這就需要用到dispatch_barrier_async方法在兩個操作組間形成柵欄

- (void)gcdBarrier
{

    // 創建隊列
    dispatch_queue_t queue = dispatch_get_global_queue(0, 0);

    dispatch_async(queue, ^{
        NSLog(@"----1-----%@", [NSThread currentThread]);
    });
    dispatch_async(queue, ^{
        NSLog(@"----2-----%@", [NSThread currentThread]);
    });

    dispatch_barrier_async(queue, ^{
        NSLog(@"----barrier-----%@", [NSThread currentThread]);
    });

    dispatch_async(queue, ^{
        NSLog(@"----3-----%@", [NSThread currentThread]);
    });
    dispatch_async(queue, ^{
        NSLog(@"----4-----%@", [NSThread currentThread]);
    });


    // 可以看出在執行完柵欄前面的操作之後,才執行柵欄操作,最後再執行柵欄後邊的操作

}//珊欄方法的
發佈了99 篇原創文章 · 獲贊 4 · 訪問量 4萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章