我正在尝试创建一个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();
这需要分叉或单独的线程服务器吗?
答案 0 :(得分:1)
您只需创建一个线程成员变量,然后让io_service
在该线程上运行。您可以处理主线程中的所有进程输入,并为您的服务器类变量做一些工作。
std::thread ioThread;
ioThread = std::thread([this]() { io_service.run(); });
请勿忘记稍后加入该主题并停止io_service。
io_service.stop();
if (ioThread.joinable())
ioThread.join();