Нужно ли нам несколько io_service на поток для многопоточного сервера boost::asio с одним акцептором

У меня мало опыта в boost::asio. У меня есть несколько довольно простых вопросов.

Нужно ли мне иметь другой io_serviceи другой сокетв другом потоке, но один единственный acceptor, чтобы обрабатывать клиента на многопоточном сервере?

Я считаю, что у меня должен быть другой сокет для нового клиента. Но если все потоки используют один и тот же io_service, будет ли он параллельным?

Я просматривал http://en.highscore.de/cpp/boost/index.htmlв разделе asio в котором говорится, что мне нужно иметь разные io_services в разных потоках для достижения параллелизма.

Если я планирую создать класс сервера, который создает новую TCP-сессиюкаждый раз, когда появляется новый клиент, в acceptor.async_accept
и TCPSessionctor создает io_serviceи потоки запускает этот io_service.run()в своем собственном потоке. Будет ли это хорошим дизайном?

Однако в этом дизайне, где бы я мог соединить все эти потоки? мне нужен еще один io_serviceдля main, чтобы он не завершался даже до получения нового Клиента?

8
задан Dipro Sen 13 June 2012 в 08:00
поделиться