std::scoped_lock\std::shared_mutex\std::unique_lock
std::scoped_lock(C++17提供 RAII锁管理)
- 构造时自动加锁
- 离开作用域时自动解锁
- 即使中间发生异常,也会自动释放锁
- 默认执行独占锁定
- 可以同时安全锁定多个互斥量
注:简单作用域锁
std::unique_lock
- 延迟加锁
- 手动 unlock()
- 再次 lock()
- 转移锁的所有权
- 配合条件变量使用
- 支持锁的尝试操作
注:可控制性更强的灵活锁
std::shared_mutex
- 大量线程同时读取
- 少量线程修改
不同场景
- 读取时使用共享锁:std::shared_lockstd::shared_mutex lock(mutex)
- 修改时使用独占锁: std::unique_lockstd::shared_mutex lock(mutex)

浙公网安备 33010602011771号