为什么lock_guard需要可锁定的概念

Why lock_guard requires Lockable concept

本文关键字:锁定 lock guard 为什么      更新时间:2023-10-16

似乎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_guardunique_lock的要求不正确,并且在 n3290 中删除了该段落,如 n3278:最近的并发问题解决方案中所示