0

boost::beast/asio を使用したいアプリケーションに取り組んでいます。Websocket 接続を介してデータを受信し、同時に REST API に要求を発行する必要があります。

boost::beast websocket/HTTP 非同期クライアントの例では、完了ハンドラで次の非同期操作が開始されるようです。これは、node.js アプリケーションで見たのと同じ「コールバック地獄」を引き起こしているようです。

これを回避するために、アプリケーションで単純なステート マシンを使用して、次に開始する操作を決定することを考えています。アプリケーションで while ループを使用して、io_context で poll() を呼び出し、その後ステート マシン コードを実行することを考えています (例: switch(state) { ... state = nextState; } )。

ただし、これにより、メイン スレッドが常にステート マシンを実行している間に 100% の CPU を消費するビジー ループが作成される可能性があります。

私の推論は正しいですか? post() のようなものを使用して、ステートマシンを進めるファンクターをキューに入れる方がよいでしょうか?

4

1 に答える 1