与 std::lock_guard 相比,std::scoped_lock 的目的只是处理多个互斥体
Is the purpose of std::scoped_lock only to handle multiple mutexes, compared to std::lock_guard?
在阅读有关std::scoped_lock
和std::lock_guard
的文档时,唯一的区别是scoped_lock
可以处理多个锁保护,并且可以在解锁时避免死锁。
这是唯一的区别吗?如果我只有一个mutex
,我应该继续使用使用lock_guard
吗?
据我所知,唯一重要的区别是scoped_lock
有一个可变参数构造函数,如您所提到的,需要多个mutex
。此外,您还可以实现具有模板专用化的单参数版本的scoped_lock
。
因此,lock_guard
有点非正式地"弃用"。
我认为lock_guard
仍然存在,因为兼容性。
相关文章:
- 为什么 c++11 std::lock 和 std::scoped_lock 至少需要 2 个参数?
- 为什么"weak.lock()"返回"nullptr" "auto weak=std::make_shared<int>(42);"的定义?
- DRD 报告"conflicting load" std::mutex::lock 上的错误
- 在 std::tie 中使用 std::weak_ptr::lock()
- std::lock_guard 怎么可能比 std::mutex::lock() 更快?
- std::mutex::lock() 产生奇怪(和不必要的)ASM 代码
- std::lock 仍然导致死锁
- 在任何地方对C++中所有并行线程中的所有锁定和解锁实例使用相同的 std::mutex 和 lock 对象
- 当我调用lock()时,为什么std :: mutex会引发异常
- 使用 std::lock (c++11) 的大量 CPU 负载
- std::lock() equivalent for boost::shared_mutex?
- 为什么在 std::lock 中没有超时支持
- “std::mutex”和“std::lock”是否保证处理器间代码中的内存同步
- std::weak_ptr:lock或shared_ptr构造函数
- std::mutex::lock可以抛出即使一切看起来"good"?
- std::weak_ptr.lock在多线程c++中的语义
- STD::Lock 的友元函数定义和替代提升函数
- 什么是更好的 std::lock_guard<std::mutex> lock(std::mutex mutex_var); 或 std::mutex mutex_var.lock();
- 尝试std::lock[_unique]和std::shared_mutex的线程是否会被调用std::lock_sha
- std::lock_guard<std::mutex> lock(m) 是否有简写?