OC原理之读写锁

iOS中读写安全方案

读写锁区别于线程锁,读写锁允许多个线程去读,但是去写的时候保证只有一个在写

pthread_rwlock

// 初始化锁
pthread_rwlock_init(&_lock, NULL);

// 加读锁
pthread_rwlock_rdlock(&_lock);

// 尝试加读锁
pthread_rwlock_tryrdlock(&_lock);

// 解锁
pthread_rwlock_unlock(&_lock);

// 加写锁
pthread_rwlock_wrlock(&_lock);

// 尝试加写锁
pthread_rwlock_trywrlock(&_lock);

// 销毁锁
pthread_rwlock_destroy(&_lock)

dispatch_barrier_async

相当于一个栅栏,如果是读操作,会立一个栅栏,让所有的读操作都过去,直到有一个写操作,此时再力

立起栅栏,在这个写操作的结束,再立起一个栅栏一次类推

dispatch_queue_create("rw_queue", DISPATCH_QUEUE_CONCURRENT);// 创建一个并行队列

dispatch_async(self.queue, ^{
    // read操作
});

dispatch_barrier_async(self.queue, ^{
    // 写操作
});

 

posted @ 2021-02-25 20:38  木子沉雨  阅读(419)  评论(0编辑  收藏  举报