我正在开发一个我想在其中使用 boost::beast/asio 的应用程序。我需要通过 websocket 连接接收数据并同时向 REST API 发出请求。
在 boost::beast websocket/HTTP 异步客户端示例中,似乎下一个异步操作是在完成处理程序中启动的。这似乎引发了我在 node.js 应用程序中看到的相同的“回调地狱”。
为了避免这种情况,我正在考虑在我的应用程序中使用一个简单的状态机来决定接下来要开始什么操作。我正在考虑在我的应用程序中有一个 while 循环,我在 io_context 上调用 poll() 之后我运行我的状态机代码(例如 switch(state) { ... state = nextState; } )
然而,这可能会创建一个繁忙的循环,其中主线程在不断运行状态机的同时消耗 100% cpu?
我的推理是否正确,使用 post() 之类的东西来排队一个可以推进状态机的函子会更好吗?