gpt4 book ai didi

c++ - 同一个互斥锁上有很多锁,一个锁永远

转载 作者:行者123 更新时间:2023-11-30 02:29:09 24 4
gpt4 key购买 nike

在我的程序中,我有一个互斥量和两个线程。这些线程之一经常获取锁。另一个线程尝试获取,但必须永远等待。

会不会是释放后很快就获取了锁,导致其他线程没有机会?互斥锁总是给每个人机会吗?如果不是,什么是好的解决方案?(某种 FIFO 锁?)

我正在使用 std::mutex 和 std::lock_guard

问题扩展seccpur 指出 std::condition_variable 可以解决这个问题。这如何扩展到三个线程? std::condition_variable 是否确保每个线程都能轮到?假设您使用 notify_one()。

最佳答案

std::mutex 不保证给每个人平等的机会。所以有可能一个线程饿死另一个线程。您可以尝试的第一件事是插入 std::this_thread::yield()看看是否有帮助。如果这没有帮助,那么您的代码一定有逻辑错误。发布部分代码,我们可以帮助您进一步诊断。

关于c++ - 同一个互斥锁上有很多锁,一个锁永远,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39878090/

24 4 0