我正在实现一个 C++ 多线程应用程序,在某些变量上我的读者多于编写者(至少 30:1 的比例),我想使用 RWLocks(maybe pthread_rwlock
) 而不是 Mutexes( std::mutex
),因为它们似乎非常适合许多读者.
我读到的内容:
https ://en.wikipedia.org/wiki/Readers%E2%80%93writer_lock
https://www.arangodb.com/2015/02/comparing-atomic-mutex-rwlocks/
https://docs .oracle.com/en/java/javase/11/docs/api/java.base/java/util/concurrent/locks/ReadWriteLock.html(java但我认为原理是一样的)
但似乎 RWLock 的自定义实现在内部至少包含一个互斥锁,那么为什么要使用 RWLock 呢?