我目前正在(重新)设计一个由几个部分组成的系统:
- 第一部分是一个实体,它(异步)从源获取帧并在每次帧准备好时触发一个事件——通过 Qt 信号。
- 第二部分是实时显示帧的 GUI,并通过插槽连接到上述信号
- 最后一部分是帧处理器,它的行为最好用顺序算法(while、for 等)来描述,并有可能响应来自 GUI 的几种信号。
主要问题是是否有组织此类代码的最佳实践?
我想出但不太喜欢的解决方案是:运行 4 个线程。
- 通过 Qt 信号与其他 3 个线程进行通信的 GUI 线程
- 帧源线程在每个帧可用性上发出信号。
- 帧组织器线程,它根据信号存储帧并使用 QWaitCondition 通知帧处理器线程。
- 从帧管理器调用 getNextFrame() 的帧处理器线程。
但我觉得这不是一个好的解决方案,可能是由于混合了不同的范例(等待条件和信号)。此外,等待条件可能会导致事件处理队列不足。