我需要在作用域块上实现锁。我发现std :: lock_guard实现相同:
说明
尝试获得它所提供的互斥锁的所有权。何时控制 离开创建lock_guard对象的范围, lock_guard被破坏,互斥体被释放
但是再次在这里声明
如果已拥有互斥锁的线程调用了锁,则 行为是不确定的:例如,程序可能会死锁。
std :: mutex :: lock是否由std :: lock_guard内部调用-我有一种情况,当数据到达端口时,回调将调用成员方法-预期数据可以成倍地到达,当相关方法被一个回调执行时?
答案 0 :(得分:0)
是的,lock_guard
调用lock()
来锁定互斥锁。 (它还可以工作吗?)如果您认为线程可以通过std::mutex
或直接递归锁定lock_guard
,则应该改用std::recursive_mutex
,它没有这个弱点。