問題タブ [boost-msm]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
229 参照

c++ - コルーチンで MSM + ASIO をブーストします。シンプルなテストケースが機能しない

ドキュメントの 2 つのブーストの例を組み合わせた小さな例を作成しようとしています。1 つ目は MSM (ステート マシン) ライブラリの例です: https://www.boost.org/doc/libs/1_75_0/libs/msm/doc/HTML/examples/AnonymousTutorialWithFunctors.cpp 2 つ目はエコーです。 Asio のサーバー (コルーチンを含む) の例: https://www.boost.org/doc/libs/1_75_0/doc/html/boost_asio/example/cpp17/coroutines_ts/refactored_echo_server.cpp エコー サーバーの例は、私のマシンで正しく動作します。

ステート マシンには 2 つの状態がAsioInitStateありRegisterServersState、遷移テーブルには匿名遷移が 1 つだけあります。

私のソースコードに従ってください: EchoServerMSM.h

main.cpp

私が得るコンソール出力は次のとおりです。

  • listener - 1がコンソールに出力されないのはなぜですか?
  • キューに他のコルーチンがある場合、io_context はどのように実行を終了しますか?
  • this_coro::executorリスナーには何が表されていますか? で切り替えても同じでしょう*(fsm.io_context)か?
  • エコーサーバーの例として機能させるために必要な他の手順はありますか?

編集:コンパイルするためのcmake(winまたはmac):

0 投票する
1 に答える
19 参照

boost - stop() の msm 使用量を増やす

boost::msm を使用すると、stop 関数の動作が予想とは異なることに気付きました。私がすると言いましょう

停止後、それ以上のイベントは処理されないと思います。ただし、ここでの出力は

完全な例はこちらhttps://godbolt.org/z/o88ze6641

ステート マシンがさらにイベントを受け入れるのを妨げない場合、 stop()はどのように使用しますか? 現在の状態の on_exit をトリガーすることは知っていますが、状態を離れた後に状態に再入するのは奇妙に思えます。