⚡ 编程实验室🏗️ HTML🎨 CSS⚡ JavaScript🐍 Python🗄️ SQL☕ Java⚛️ React💚 Vue🟢 Node.js⚙️ C语言🐘 PHP🐹 Go🔷 TypeScript🐬 MySQL🔧 C++🎯 C#🦀 Rust🅱️ Bootstrap💡 jQuery🎸 Django🍃 MongoDB👗 Sass🎪 Kotlin📊 R语言📋 XML📊 Excel🐘 PostgreSQL🐳 Docker🅰️ Angular🎮 游戏🏠 网站首页

std::shared_mutex 读写锁

学习 shared_mutex 实现读共享、写独占的并发控制。 · 难度:入门 · +15XP

std::shared_mutex 读写锁

shared_mutex 允许多个读线程同时获取共享锁,但写线程必须获得独占锁,其它所有线程(读和写)必须等待。适用于读多写少的场景,可大幅提升并发性能。使用 lock_shared() / unlock_shared() 获取/释放共享锁,lock() / unlock() 获取/释放独占锁。C++17 起可用 std::shared_lockstd::unique_lock 简化管理。

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

std::shared_mutex sh_mtx; int data = 0;

void reader(int id) { std::shared_lock lock(sh_mtx); std::cout << "Reader " << id << " reads: " << data << ' '; } // 自动解锁

void writer(int id, int val) { std::unique_lock lock(sh_mtx); data = val; std::cout << "Writer " << id << " writes: " << data << ' '; }

int main() { std::vector<std::thread> threads; for (int i = 0; i < 3; ++i) threads.emplace_back(reader, i); threads.emplace_back(writer, 1, 42); for (auto& t : threads) t.join(); return 0; }

Ctrl+Enter
🚀 升级VIP
解锁全部课程+AI助手

🏆 学习排行

加载中...

📊 统计

📖 105 篇
0 完成
🔥 0