【发布时间】:2015-09-28 03:59:59
【问题描述】:
我想创建一个网关来传递来自 can bus 和 lcm 的消息,反之亦然。如果 lcm 中的消息以特定频率发送,则它在 can bus 上的副本应该以完全相同的频率发送。
你会怎么解决这个问题?
在我的脑海中,我想到了两个线程,一个用于将消息从一个系统循环到另一个系统的每个方向。这两个线程由一个计时器协调,该计时器设置为比可能的最大消息传递频率低得多的频率。计时器在每个周期后向线程发送一个信号。线程在每个循环结束时等待该事件,即它们休眠并释放资源,直到事件发生。 我已经实现了这个想法,但产生的频率不是恒定的。我在概念上做错了吗?
解决方案应该在 Windows 上运行,例如使用原生 Windows api 或 boost 线程。网关应该是实时的。
【问题讨论】:
-
为什么不是两个线程从一个总线读取并立即写入另一个总线?
标签: c++ windows multithreading controls real-time