Boost状态图库 - 如何实现耗时的转换

时间:2009-08-24 12:37:31

标签: c++ boost boost-statechart

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

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

感谢。

1 个答案:

答案 0 :(得分:2)

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

如果您的逻辑具有任何长时间的操作,最好将UI放入其自己的线程中,否则您将无法响应。

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