std::recursive_mutex 会导致死锁吗?

问题描述 投票:0回答:1

我知道如果我在一个线程中锁定

std::mutex
两次,就会导致死锁。

因此,我将

std::mutex
全局替换为
std::recursive_mutex

仅使用

std::recursive_mutex
是否意味着我永远不会遇到死锁?

这有什么潜在的问题吗(除了稍微慢一点之外?

c++ locking mutex
1个回答
0
投票

用 std::recursive_mutex 替换 std::mutex 有助于避免线程锁定自身而导致死锁。 这不是一个有保证的修复。由于锁定顺序错误或外部资源依赖性,死锁仍然可能发生。 仅当真正需要递归锁定时才使用 std::recursive_mutex。考虑其他替代方案。

© www.soinside.com 2019 - 2024. All rights reserved.