请问多线程之间是如何协调配合的?

284 天前
 maxssy
比如一个 qt 程序接 2 个串口设备 A 和 B, 且 A,B 的控制程序分别放到了两个线程里防止阻塞界面线程.

现在需求是按 btn1 后先查询 A 的状态, 如果是状态 a1 则调用 B 的 b1 操作如果是 a2 则调用 B 的 b2 操作, 这套流程需要重复多次且 b1 和 b2 是耗时十几秒的操作, 需要等到 b1 或 b2 完成后才继续下一次循环

现在的问题是主线程的循环中用 QTime+QCoreApplication::processEvents 的非阻塞等待时循环不会等待 b1 或 b2 跑完直接跳到下一循环, 只能用 sleep 硬阻塞
有啥好办法或最佳实践吗?
439 次点击
所在节点    Qt
1 条回复
sanbuks
284 天前
《 C++并发编程实战》 4.4.2 提到 CSP ,可以参考下
简单说就是把 A 把 命令 投递到 B 的消息队列中, 通过 命令 的 condition_variable 实现反馈

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1023919

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX