即使我手动调用了unique_lock::unlock()
,unlock
函数也被销毁了,以便在给定的互斥锁上收到两次解锁信号吗?
答案 0 :(得分:3)
否,它不会尝试解锁。如果您查看unlock
,它会
确保:
owns == false
。
效果:如果
owns
呼叫pm->unlock()
。
因此,由于unlock
释放了所有权,因此析构函数将不会尝试对其进行解锁。
答案 1 :(得分:1)
不。 参见documentation:
如果
*this
具有关联的互斥锁并已获得其所有权,则 互斥锁已解锁。
答案 2 :(得分:0)
不是,不是。
考虑mutex
的观点,其中std::mutex::unlock
(来自cppreference):
解锁互斥锁。
互斥锁必须由当前执行线程锁定, 否则,行为是不确定的。
因此,如果锁在不再锁定的unlock
上调用mutex
,将是致命的。