gpt4 book ai didi

c++ - 多线程应用程序概念

转载 作者:太空狗 更新时间:2023-10-29 23:38:07 24 4
gpt4 key购买 nike

我对在单独的功能单元(很可能是线程?)中组织代码有一个小小的架构疑问。正在开发的应用程序应该执行以下任务:

  1. 在屏幕上显示一些图像(即幻灯片)
  2. 通过USB接口(interface)从外部设备读取数据
  3. 将接收到的数据与相应的图像(刺激)进行匹配
  4. 做一些数据分析
  5. 绘制数据分析结果

我的想法是将应用程序组织成以下模块:

  1. GUI 线程(+ 图片幻灯片)
  2. USB 线程缓冲接收到的数据
  3. 用于分析/绘制数据的线程(绘制数据时不应阻塞主 GUI 线程,这可能会消耗更多时间)

那么,您一般如何看待这个概念?您认为还有其他什么可能更适合这种特定情况吗?

最佳答案

您可能可以将 1 和 2 结合起来,因为幻灯片放映功能本质上是面向图形用户界面的。

对于 #3,您可以使用某种异步 I/O 方法,这样您就不需要专用轮询线程。不确定你是否可以用 USB 做到这一点,但你肯定可以通过串行和网络接口(interface)获得异步 I/O,所以值得研究。

将重量级任务(如 4 和 5)移到它们自己的线程中可能是个好主意。如果您没有同时进行分析和绘图,则可能两者都有一个线程。但是,您真的应该考虑这些事件需要多少 CPU 时间。如果最坏情况的分析和绘图花费的时间远少于半秒,您甚至可以通过 gui 的调用来执行这些操作。相反,如果在某些情况下这需要比这更长的时间,则最好使用单独的线程,因为您的用户不会喜欢滞后的图形用户界面。

请记住,线程的阴暗面在于协调它们不可避免的挑战。

关于c++ - 多线程应用程序概念,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2367911/

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