CodeWalk

shared_lock实现读写锁详解

作者:小字辈 · 2026-05-30 12:55

请解释std::shared_lockstd::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; // 写时排他
}

读读不互斥、读写互斥、写写互斥,适合读多写少的场景。