multithreading - 尝试将来自两个线程的线程不安全调用同步到另一个线程时出现死锁
问题描述
在我当前的项目中,我们使用了一个 3rd 方库,该库旨在仅从单个线程运行。但是我们的项目是多线程的。我不知道这是否很常见,但我做了最简单的事情来解决竞争条件。
我想出了一个设计,我们的线程必须向特定的单个线程询问这个线程不安全的调用。比如我们已经有了线程 A 和 B,现在我想出了一个线程 C。如果 A 或 B 想要计算(使用 3rd 方库完成),他们必须向 C 询问。C 只会回复每次一个线程,这很好,即使 A 和 B 已经被询问并等待 C 完成,也会被阻塞。
我想用条件变量来实现它,但我仍然遇到死锁。您能否查看我删除了额外数据结构的示例,并告诉我是否应该改变我的方法,或者您是否看到可能导致死锁的部分,您能否就该部分代码提出您的建议。
解决方案
推荐阅读
- sql - 如何使用与正在编辑的记录相关的值填充组合框
- javascript - 可编辑代码中的 Javascript 荧光笔
- vba - 引用循环中的变化函数
- elixir - erl的'rr'的iex等价物是什么?
- ruby - 使用用户名和密码休息客户端帖子
- python - 如何索引 3d 数组中具有不同行数的几个 2d numpy 数组?
- r - 库“TableOne”多重比较。逐行计算 p 值
- javascript - html 表单文本元素,无法正确解析为 javascript 方法
- c# - 在 C# 中获取 XML 中的第一个节点名称
- javascript - React 箭头函数产生不同的调试体验