我正在尝试创建一个能够通过网络异步发送/接收请求/响应作为数据包的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();