我正在查看来自 boost 站点的这个示例(出于学习目的):
在 main 中,我添加了几个线程来运行 io_context。
我实现的行为是我有多个线程在套接字上监听,每个线程都在等待工作并完成整个工作 a-z,所以如果我所有的线程都忙于工作并且另一个客户端向服务器发送一些文本他会挂起,直到某个线程再次可用。
我想要 1 个线程监听套接字并将所有工作排队,并需要一个线程池来处理所有工作。
如果我理解正确,我不需要在 main 中创建一个线程池,而是保持原样,只有主线程接受连接,并在服务器中创建另一个带有线程池的 io_context,并以某种方式让所有 session 使用它池,我不知道怎么写这个。
如果我不将它传递给 session ,我仍然不明白每个 session 如何知道它使用哪个 io_context。
最佳答案
套接字存储一个执行器。该执行者引用 io_context
。
在旧的 Boost 版本中,套接字将直接存储对 io_service
的引用。
关于c++ - boost asio async_tcp_echo_server 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51013536/