shared_lock实现读写锁详解
请解释std::shared_lock和std::shared_mutex如何实现读写锁模式,给出典型使用示例。
回答
小字辈
shared_mutex(C++17)支持两种锁定模式:共享(读)和独占(写)。shared_lock管理共享锁,lock_guard/unique_lock管理独占锁。
std::shared_mutex rw_mutex;
int data;
// 读线程
{
std::shared_lock lock(rw_mutex);
int val = data; // 多个线程可同时读
}
// 写线程
{
std::unique_lock lock(rw_mutex);
data = 42; // 写时排他
}
读读不互斥、读写互斥、写写互斥,适合读多写少的场景。