思考如何实现如下场景并发
上面的场景就是典型的多读单写
,常常用于文件等数据的读写操做,iOS中的实现方案有异步
// 定义读写锁
pthread_rwlock_t rwlock;
// 初始化读写锁
pthread_rwlock_init(&rwlock, NULL);
// 读取加锁
pthread_rwlock_rdlock(&rwlock);
// 尝试读取加锁
pthread_rwlock_tryrdlock(&rwlock);
// 写入加锁
pthread_rwlock_wrlock(&rwlock);
// 尝试写入加锁
pthread_rwlock_trywrlock(&rwlock);
// 解锁
pthread_rwlock_unlock(&rwlock);
// 销毁读写锁
pthread_rwlock_destroy(&rwlock);
复制代码
这个函数传入的并发队列必须是本身经过dispatch_queue_cretate
建立的async
若是传入的是一个串行或是一个全局的并发队列,那这个函数便等同于dispatch_async
函数的效果函数
原理以下图测试