运行 boost::asio 异步服务器以及命令循环



我正在尝试创建一个能够通过网络异步发送/接收请求/响应作为数据包的C++守护进程。它应该与客户端(面向外部的消息 API(和其他守护程序(服务器间消息(通信

我目前正在研究boost::asio,特别是 http://www.boost.org/doc/libs/1_65_1/doc/html/boost_asio/tutorial/tutdaytime6/src.html 作为一个起点,它似乎正在运行一个能够处理异步的服务器。 发送和接收。

我的问题是,这个服务器是否可以与命令循环一起运行(在后台(,例如响应用户输入的进程(例如 shell(?提供的日间服务器程序似乎在线io_service.run();

阻塞

这是否需要分叉或单独的线程服务器?

您只需创建一个线程成员变量,并让io_service在线程上运行。您可以在主线程中处理所有进程输入,并为您的服务器类变量提供一些工作。

std::thread ioThread;
ioThread = std::thread([this]() { io_service.run(); });

不要忘记稍后加入线程并停止io_service。

io_service.stop();
if (ioThread.joinable())
    ioThread.join();

最新更新