У меня мало опыта в boost::asio
. У меня есть несколько довольно простых вопросов.
Нужно ли мне иметь другой io_service
и другой сокет
в другом потоке
, но один единственный acceptor
, чтобы обрабатывать клиента на многопоточном сервере?
Я считаю, что у меня должен быть другой сокет для нового клиента. Но если все потоки используют один и тот же io_service
, будет ли он параллельным?
Я просматривал http://en.highscore.de/cpp/boost/index.htmlв разделе asio в котором говорится, что мне нужно иметь разные io_services в разных потоках для достижения параллелизма.
Если я планирую создать класс сервера, который создает новую TCP-сессию
каждый раз, когда появляется новый клиент, в acceptor.async_accept
и TCPSession
ctor создает io_service
и поток
и запускает этот io_service.run()
в своем собственном потоке. Будет ли это хорошим дизайном?
Однако в этом дизайне, где бы я мог соединить все эти потоки? мне нужен еще один io_service
для main
, чтобы он не завершался даже до получения нового Клиента?