栅函数(barrier)
Swift
var _count = 0var count:Int {
set{
GCDQueue.async(flags: DispatchWorkItemFlags.barrier) {
_count = newValue
}
}
get{
GCDQueue.sync {
return _count
}
}
}
OC
- (id)objectForKey:(NSString *)key {
__block id obj;
// 同步读取指定数据:
dispatch_sync(self.GCDQueue, ^{
obj = [self.dataCenterDic objectForKey:key];
});
return obj;
}
写操作
- (void)setObject:(id)obj forKey:(NSString *)key {
// 异步栅栏调用设置数据:
dispatch_barrier_async(self.GCDQueue, ^{
[self.dataCenterDic setObject:obj forKey:key];
});
}
如果GCD有其他方式可以实现读写锁请告诉我下(评论区贴一个链接也行)。万分感谢