我知道如果我在一个线程中锁定
std::mutex
两次,就会导致死锁。
因此,我将
std::mutex
全局替换为 std::recursive_mutex
。
仅使用
std::recursive_mutex
是否意味着我永远不会遇到死锁?
这有什么潜在的问题吗(除了稍微慢一点之外?
用 std::recursive_mutex 替换 std::mutex 有助于避免线程锁定自身而导致死锁。 这不是一个有保证的修复。由于锁定顺序错误或外部资源依赖性,死锁仍然可能发生。 仅当真正需要递归锁定时才使用 std::recursive_mutex。考虑其他替代方案。