É possível usar segmentos separados para ler e escrever com Boost.Asio?
-
11-09-2019 - |
Pergunta
De acordo com o impulso Documentação , tendo vários segmentos chamam conjuntos io_service::run()
um pool de threads que o serviço IO pode usar para executar tarefas assíncronas. Ele afirma explicitamente que os tópicos que aderiram à piscina são considerados equivalentes.
Será que isso implica que não é possível ter um segmento separado para a leitura de um soquete e uma separada para escrever? Se for possível, como eu iria implementar isso?
Solução
Qualquer segmento que chama io_service::run()
pode ser usado para invocar manipuladores assíncronas. Mas você não pode especificar especificamente executa que discussão que tipo de operação. Por exemplo, se você chamar io_service :: run () com 2 fios de fundo, e você fosse chamar socket::async_send
e socket::async_receive
em um segmento principal, seus manipuladores será executado em qualquer discussão de fundo que está atualmente disponível. Então, sim, os tópicos são basicamente considerados equivalentes, e pode ser usado para qualquer operação assíncrona.