3

在我们的项目中,我们有 UI 和逻辑(可以表示为状态机)。此步进机器中某些步骤之间的转换很长(IO 绑定)。我们不想在转换过程中一直窃取我们的 UI 线程。因此,我们正在寻找一种方法来在单独的线程中执行此转换,然后在转换完成时更新 UI。

我目前将 boost 状态图库评估为实现这种逻辑的选项之一,我想问一下使用它实现这种长时间转换功能的正确方法是什么?

谢谢。

4

1 回答 1

2

状态之间的转换应该由事件触发,而不是长时间的操作。

如果你有任何长时间操作的逻辑,最好将 UI 放到它自己的线程中,否则你将没有响应。

您始终可以在各自的线程中拥有两个独立的状态机,然后使用线程间通信为每个状态机相互触发。消息传递可能是最可靠的方法。(boost::interprocess::message_queue可能有点矫枉过正,但它会起作用)

于 2009-09-01T13:11:31.323 回答