为什么lock_guard需要可锁定的概念
Why lock_guard requires Lockable concept
似乎BasicLockable概念足以满足lock_guard,但在标准草案(N3242)中,互斥模板参数需要Lockable。任何原因 ?
在 n3290 (§30.4.2.1[thread.lock.guard]/1) 中,它说:
类型
lock_guard
的对象控制作用域内可锁定对象的所有权。lock_guard
对象在lock_guard
对象的整个生存期内保持可锁定对象的所有权 (3.8)。如果pm
引用的可锁定对象在lock_guard
对象的整个生存期内不存在,则程序的行为是未定义的。提供的Mutex
型必须符合BasicLockable
要求(30.2.5.2)。
n3242 中的第 2 段可能是编辑错误。这是库缺陷 2023:对lock_guard
和unique_lock
的要求不正确,并且在 n3290 中删除了该段落,如 n3278:最近的并发问题解决方案中所示
相关文章:
- 如何找到锁定Linux futex的C++行
- G锁定铸造到基础上会释放模拟行为
- 如何检查线程是否锁定
- 如何在C++中找到active directory中禁用和锁定的窗口帐户
- 我应该在锁定TBitmap画布后解锁它吗
- 尝试构建"lock-free"数据结构C++
- C++ 11 中的锁定是否保证访问数据的新鲜度?
- 在两个线程上读/写 64 位,无互斥/锁定/原子
- 如何在实时应用程序中锁定线程
- 为什么 c++11 std::lock 和 std::scoped_lock 至少需要 2 个参数?
- 为什么"weak.lock()"返回"nullptr" "auto weak=std::make_shared<int>(42);"的定义?
- 在 lambda 中锁定 std::shared_ptr 的复制操作
- DRD 报告"conflicting load" std::mutex::lock 上的错误
- 使用简单两相锁定的并发程序
- 锁定来自其他线程的类成员
- 他们如何将红外锁定像素转换为镜头前方 1m 的正常平面上的位置
- 同一互斥锁顺序上的锁定和解锁是否一致?
- 在任何地方对C++中所有并行线程中的所有锁定和解锁实例使用相同的 std::mutex 和 lock 对象
- mutex::lock() 检查一次解锁状态是否已经被另一个线程锁定?
- RocksDB IO错误:锁定db/lock:没有可用的锁