1. 程式人生 > >iOS 用佇列實現讀寫執行緒安全

iOS 用佇列實現讀寫執行緒安全

讀寫操作時,為了提高效率,應該允許同時多個執行緒讀操作,並且只有一個執行緒寫操作。

為了實現上面功能,將讀和寫分發到相同併發佇列中,這樣讀操作會是併發的;而寫操作,以 dispatch barrier 來保證同時只有一個執行緒可以執行寫操作,並且由於寫操作無需返回,寫操作非同步執行。

程式碼如下:

dispatch_queue_t syncQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

- (NSString*)name {

__blockNSString *myName;

dispatch_sync

(syncQueue, ^{

        myName = _name;

    });

return myName;

}

- (void)setName:(NSString*)name {

dispatch_barrier_async(syncQueue, ^{

        _name = name;

    });

}