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]);
});
// 可以看出在執行完柵欄前面的操作之後,才執行柵欄操作,最後再執行柵欄後邊的操作
}//珊欄方法的