首页 > 解决方案 > 尝试将来自两个线程的线程不安全调用同步到另一个线程时出现死锁

问题描述

在我当前的项目中,我们使用了一个 3rd 方库,该库旨在仅从单个线程运行。但是我们的项目是多线程的。我不知道这是否很常见,但我做了最简单的事情来解决竞争条件。

我想出了一个设计,我们的线程必须向特定的单个线程询问这个线程不安全的调用。比如我们已经有了线程 A 和 B,现在我想出了一个线程 C。如果 A 或 B 想要计算(使用 3rd 方库完成),他们必须向 C 询问。C 只会回复每次一个线程,这很好,即使 A 和 B 已经被询问并等待 C 完成,也会被阻塞。

我想用条件变量来实现它,但我仍然遇到死锁。您能否查看我删除了额外数据结构的示例,并告诉我是否应该改变我的方法,或者您是否看到可能导致死锁的部分,您能否就该部分代码提出您的建议。

标签: multithreadingc++11

解决方案


推荐阅读