увеличить пример asio async_tcp_echo_server - PullRequest
0 голосов
/ 24 июня 2018

Я смотрю на этот пример с сайта поддержки (в учебных целях):

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

В основном я добавил несколько потоков для запуска io_context.

Достигнутое мной поведение заключается в том, что несколько сокетов прослушивают сокет, каждый ждет работы и выполняет всю работу z, поэтому, если все мои потоки заняты выполнением работы, а другой клиент отправляет некоторый текст на сервер, он будет зависать до некоторого времени.поток снова будет доступен.

Я хочу, чтобы 1 поток прослушивал сокет и помещал в очередь всю работу, а пул потоков обрабатывал всю работу.

Если я правильно понимаю, я ненужно создать пул потоков в основном, но оставить его как есть только с основным потоком, чтобы принимать подключения и создать еще один io_context с пулом потоков на сервере и каким-то образом заставить все сеансы использовать этот пул, я не могу понять, как писатьthis.

Я также до сих пор не понимаю, как каждый сеанс знает, какой io_context он использует, если я не передаю его сеансу.

1 Ответ

0 голосов
/ 24 июня 2018

Сокет хранит исполнителя. Этот исполнитель относится к io_context.

В более старых версиях Boost сокеты сохраняли ссылку на io_service напрямую.

...