提升asio async_tcp_echo_server示例

时间:2018-06-24 20:05:49

标签: c++ multithreading asynchronous boost boost-asio

我正在从Boost网站看这个示例(出于学习目的):

https://www.boost.org/doc/libs/1_66_0/doc/html/boost_asio/example/cpp11/echo/async_tcp_echo_server.cpp

主要,我添加了几个线程来运行io_context。

我实现的行为是,我有多个线程在套接字上侦听,每个线程等待工作并完成整个工作,因此,如果我所有的线程都在忙于工作,而另一个客户端向服务器发送一些文本,他会挂起,直到某个线程再次可用。

我希望有1个线程在套接字上侦听并将所有工作排队,并希望有一个线程池来处理所有工作。

如果我理解正确,我不需要在main中创建线程池,而是将其保留为仅保留主线程以接受连接,并在服务器中使用线程池创建另一个io_context,并以某种方式使所有会话都使用此线程池池,我不知道该怎么写。

如果我不将每个会话传递给会话,我仍然不了解每个会话如何知道它使用哪个io_context。

1 个答案:

答案 0 :(得分:1)

套接字存储一个执行程序。该执行者指的是io_context

在较早的Boost版本中,套接字将直接存储对io_service的引用。