iOS读写锁的实现(OC&swift)

294 阅读1分钟

栅函数(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有其他方式可以实现读写锁请告诉我下(评论区贴一个链接也行)。万分感谢