У меня есть сервер, использующий boost::asio
, который я хочу сделать многопоточным.
Сервер может быть разбит на несколько «областей», при этом сокеты начинаются в области подключения, а затем, после подключения к клиенту, перемещаются в область аутентификации (т.е. вход или регистрация), а затем перемещаются между различными другими частями сервера. о том, что делает клиент.
Я не особо хочу просто использовать пул потоков на одном io_service
для всех сокетов, так как потребуется большое количество блокировок, особенно в областях с большим объемом взаимодействия с общими ресурсами. Однако вместо этого я хочу предоставить каждому серверному компоненту (например, аутентификации) свой собственный поток.
Однако я не уверен, как это сделать. Я рассматривал идею предоставления каждому компоненту собственного io_service, чтобы он мог использовать любые потоки, которые ему нужны, однако область сокетов привязана к io_service, и я не уверен, как затем переместить клиентский сокет из одного компонента в другой.