GCD中的dispatch_barrier_async函數的使用(柵欄函數)

<一>什麼是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

相關文章
相關標籤/搜索