linux下用互斥锁和条件变量来实现读写锁

以下内容来源自UNP卷二的第八章

读写锁的概念( the conception of read-write lock )

(1)只要没有线程持有某个给定的读写锁用于写,那么任意数目的线程可以持有该线程用于读

(2)仅当没有线程持有某个给定的读写锁用于读或用于写,才能分配该读写锁用于写

这种给定资源的共享访问方式也叫做共享-独占上锁
因为获取一个读写锁用于读是共享锁,获取一个读写锁用于写是独占锁。

其实现可以通过专门的读写锁函数来实现:

pthread_rwlock_rdlock用来获取一个读出锁,如果对应的读写锁已由某个写入者持有,那就阻塞调用进程。
pthread_rwlock_rdlock(pthread_rwlock_t *rwptr);

pthread_rwock_wrlock获取一个写入锁,如果对应的读写锁已由另一个写入者持有,或者已由一个或多个读出者持有,那么就阻塞调用线程。

pthread_rwlock_wrlock(pthread_rwlock_t *rwptr)

但是由于如果直接利用这两的函数的话,显然这个原理的实现就不够透明了。若以我们想用互斥锁和条件变量来实现读写锁,进一步探究其内部原理

夜晚补。。。

猜你喜欢

转载自blog.csdn.net/qq_37414405/article/details/83653266
今日推荐