iOS 用佇列實現讀寫執行緒安全
阿新 • • 發佈:2019-02-20
讀寫操作時,為了提高效率,應該允許同時多個執行緒讀操作,並且只有一個執行緒寫操作。
為了實現上面功能,將讀和寫分發到相同併發佇列中,這樣讀操作會是併發的;而寫操作,以 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;
});
}