【问题标题】:The Boost Statechart Library - how to implement time-consuming transitionsBoost 状态图库 - 如何实现耗时的转换
【发布时间】:2009-08-24 12:37:31
【问题描述】:

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

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

谢谢。

【问题讨论】:

    标签: c++ boost boost-statechart


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-03-02
      • 1970-01-01
      • 1970-01-01
      • 2021-05-20
      • 1970-01-01
      • 2016-09-11
      • 1970-01-01
      相关资源
      最近更新 更多