跳到主要内容

shared-mutex

读写锁 std::shared_mutex

允许多个读者共享锁,写者独占(C++17)。

#include <shared_mutex>
#include <thread>
#include <vector>

int data = 0;
std::shared_mutex rw;

void reader() {
std::shared_lock<std::shared_mutex> lk(rw);
(void)data; // 读
}

void writer() {
std::unique_lock<std::shared_mutex> lk(rw);
++data; // 写
}

int main() {
std::vector<std::thread> v;
for (int i=0;i<4;++i) v.emplace_back(reader);
v.emplace_back(writer);
for (auto &t: v) t.join();
}

读多写少场景可获益;避免写者饥饿,必要时采用策略控制或选择其他同步原语。