<一>什麼是dispatch_barrier_async函數數據庫
毫無疑問,dispatch_barrier_async函數的做用與barrier的意思相同,在進程管理中起到一個柵欄的做用,它等待全部位於 barrier函數以前的操做執行完畢後執行,而且在barrier函數執行以後,barrier函數以後的操做纔會獲得執行,該函數須要同 dispatch_queue_create函數生成的concurrent Dispatch Queue隊列一塊兒使用async
<二>dispatch_barrier_async函數的做用函數
1.實現高效率的數據庫訪問和文件訪問spa
2.避免數據競爭隊列
<三>dispatch_barrier_async實例進程
- (void)barrier
{
//同dispatch_queue_create函數生成的concurrent Dispatch Queue隊列一塊兒使用
dispatch_queue_t queue = dispatch_queue_create("12312312", DISPATCH_QUEUE_CONCURRENT);
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]);
});
}效率
輸出結果:1 2 --> barrier -->3 4 其中12 與 34 因爲並行處理前後順序不定queue