【发布时间】:2021-12-30 06:22:42
【问题描述】:
基本上,我的程序可以使用几种操作模式,每种模式都需要初始化然后更新。每种模式都有自己的配置结构。
在收到消息并确定其描述的模式后如何通知主线程进行初始化然后开始更新该模式? (我正在寻找在 C++17 中实现它的最佳方法的大纲)
为了澄清,它是一个守护程序应用程序。初始化之后,主线程的唯一工作就是进行模式更新所需的计算。网络是使用 Boost.Asio 在单独的工作线程上完成的。我还期望(因为我也在编写客户端程序)模式更改的频率会很低(最大~10hz),所以我想避免使用队列,因为模式是为了控制一个机器人,队列会增加延迟。
【问题讨论】:
-
可以在主线程中有一个通知队列,当收到的消息被推入队列时,使用条件变量通知主线程。
-
如果不了解您的主线程,很难说。它有主循环、消息队列吗?等等..等等..
-
我已经回答了,但可能有点过早。您的应用程序是带有 UI 的 GUI 程序吗?这改变了一切。或者它是一个控制台/守护进程,在后台工作完成时主线程可以保持暂停?无论如何,这个后台线程是如何开始网络的?
-
我在问题中添加了其他信息。
-
主线程是否在运行(控制)循环?例如。它是否有一个 while 循环来检查条件并在需要时运行其他代码?或者是什么阻止了主线程直接退出你的程序?
标签: c++ multithreading networking server