在命令循环旁边运行boost::asio异步服务器 我试图创建一个C++守护进程,它能够异步发送/接收请求/响应作为网络上的数据包。它应该与客户端(朝外的消息API)和其他守护进程(服务器间消息)通信

在命令循环旁边运行boost::asio异步服务器 我试图创建一个C++守护进程,它能够异步发送/接收请求/响应作为网络上的数据包。它应该与客户端(朝外的消息API)和其他守护进程(服务器间消息)通信,c++,asynchronous,boost,network-programming,boost-asio,C++,Asynchronous,Boost,Network Programming,Boost Asio,我目前正在研究boost::asio,特别是作为一个起点,它似乎正在运行一个能够处理异步的服务器。发送和接收 我的问题是,这个服务器是否可以(在后台)与命令循环一起运行,例如响应用户输入的进程(例如shell)?提供的日间服务器程序似乎在io_service.run()行阻塞 这需要一个分叉的或独立的线程服务器吗?您只需创建一个线程成员变量,并让io\u服务在线程上运行即可。您可以在主线程中处理所有进程输入,并为服务器类变量提供一些工作 std::thread ioThread; ioThrea

我目前正在研究
boost::asio
,特别是作为一个起点,它似乎正在运行一个能够处理异步的服务器。发送和接收

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


这需要一个分叉的或独立的线程服务器吗?

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

std::thread ioThread;
ioThread = std::thread([this]() { io_service.run(); });
不要忘记稍后加入线程并停止io_服务

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

看看和成员函数——你可以用一个3-d的第三方消息循环来交错这些调用,或者只是使用流支持来读取stdin