gpt4 book ai didi

c++ - 在命令循环旁边运行 boost::asio 异步服务器

转载 作者:行者123 更新时间:2023-11-30 05:07:29 25 4
gpt4 key购买 nike

我正在尝试创建一个 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();

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

最佳答案

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

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

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

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

关于c++ - 在命令循环旁边运行 boost::asio 异步服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47385393/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com