gpt4 book ai didi

c++ - Linux 应用程序中的架构建议

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:25:53 27 4
gpt4 key购买 nike

我已经在 Windows 上完成了很多编程工作,但现在我必须编写我的第一个 Linux 应用程序。

我需要使用 UDP 与硬件设备通信。我必须每秒发送 60 个大小为 40 字节的数据包。如果我在 1 秒内发送少于 60 个数据包,就会发生不好的事情。数据包的数据可能需要一段时间才能生成。但是,如果数据尚未准备好通过网络发送,则可以发送上次发送的相同数据。计算机是仅命令行设置,并且只会运行此程序。

我对 Linux 知之甚少,所以我希望对您如何设置应用程序来满足这些要求有一个大概的了解。我希望得到这样的答案:

创建2个线程,一个用于发送数据包,另一个用于计算。

但我不确定它是否那么简单(也许是)。也许制作某种只从共享内存或其他东西发送数据包然后让另一个应用程序进行计算的守护进程会更可靠?如果它是一些多进程解决方案,你会推荐什么通信机制?有什么方法可以让我的应用程序比正常或类似的优先级更高吗?

PS:越防弹越好!

最佳答案

我做过一个类似的项目:嵌入式 Linux 计算机上的一个简单软件,以固定速度发送 CAN 报文。

我会选择双线程方法。给发送线程一个稍高的优先级,如果另一个线程计算这些 block 很慢,让它再次发送相同的数据 block 。

每秒 60 个 UDP 数据包在大多数系统(包括嵌入式系统)上都相当宽松,因此我不会花太多精力优化线程之间的数据共享和数据包的发送。

事实上,我会说:保持简单!如果你确实是系统中唯一的应用程序,并且你对该系统有合理的控制权,那么你无法从复杂的 IPC 方案和其他技巧中获得任何好处。保持简单将帮助您以更少的时间生成更好的代码,缺陷更少,这实际上意味着更多的时间用于测试。

关于c++ - Linux 应用程序中的架构建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/388200/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com