Можно ли использовать отдельные потоки для чтения и записи с помощью Boost.Asio?

StackOverflow https://stackoverflow.com/questions/1837815

Вопрос

В соответствии с повышением Документация, имеющий вызов нескольких потоков io_service::run() настраивает пул потоков, который служба ввода-вывода может использовать для выполнения асинхронных задач.В нем явно указано, что все потоки, присоединившиеся к пулу, считаются эквивалентными.

Означает ли это, что невозможно иметь отдельный поток для чтения из сокета и отдельный для записи?Если это возможно, как бы я это реализовал?

Это было полезно?

Решение

Любой поток, который вызывает io_service::run() может использоваться для вызова асинхронных обработчиков.Но вы не можете конкретно указать, какой поток выполняет какой тип операции.Например, если вы вызываете io_service::run() в 2 фоновых потоках, и вы должны были вызвать socket::async_send и socket::async_receive в основном потоке ваши обработчики будут выполняться в любом фоновом потоке, который доступен в данный момент.Так что да, все потоки в принципе считаются эквивалентными и могут использоваться для любой асинхронной операции.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top