3

私たちのプロジェクトには、UI とロジック (ステート マシンとして表される場合があります) があります。このステップ マシンのいくつかのステップ間の遷移は長い (IO バウンド)。遷移が進行している間ずっと UI スレッドを盗むことはしたくありません。したがって、この遷移を別のスレッドで実行し、遷移が終了したときに UI を更新する方法を探しています。

私は現在、このようなロジックを実装するオプションの 1 つとしてブースト ステートチャート ライブラリを評価していますが、それを使用してこのような長時間の遷移機能を実装する適切な方法は何ですか?

ありがとう。

4

1 に答える 1

2

状態間の遷移は、長い操作ではなく、イベントによってトリガーする必要があります。

長い操作を含むロジックがある場合は、UI を独自のスレッドに配置することをお勧めします。そうしないと、応答しなくなります。

常に 2 つの独立したステート マシンを独自のスレッドに配置し、それぞれのスレッド間通信を使用して互いにトリガーすることができます。メッセージパッシングは、おそらく最も信頼できるアプローチです。( boost::interprocess::message_queue はやり過ぎかもしれませんが、うまくいくでしょう)

于 2009-09-01T13:11:31.323 に答える