【发布时间】:2019-08-10 08:32:24
【问题描述】:
即使我手动调用unlock 是否会在销毁时调用unique_lock::unlock() 函数,以便在给定互斥锁上接收到两次解锁信号?
【问题讨论】:
标签: c++ multithreading locking mutex
即使我手动调用unlock 是否会在销毁时调用unique_lock::unlock() 函数,以便在给定互斥锁上接收到两次解锁信号?
【问题讨论】:
标签: c++ multithreading locking mutex
不是。
考虑mutex的观点,其中std::mutex::unlock(来自cppreference):
解锁互斥锁。
互斥锁必须被当前执行线程锁定, 否则,行为未定义。
因此,如果锁会在不再锁定的 mutex 上调用 unlock,这将是致命的。
【讨论】:
【讨论】:
没有。 见documentation:
如果
*this有一个关联的互斥体并且已经获得了它的所有权,那么 互斥锁已解锁。
【讨论】: