Pergunta

Tentar aprender asio, e eu estou seguindo os exemplos do site.

Por que é io_service necessário eo que ele faz exatamente? Por que eu preciso para enviá-lo para quase todas as outras funções durante a execução de operações assíncronas, por que não pode "criar"-se após a primeira "ligação".

Foi útil?

Solução

io_service do Asio é o facilitador para a operação de funções assíncronas. Uma vez que uma operação assíncrona está pronto, ele usa um dos threads em execução de io_service para chamá-lo de volta. Se não existir tal fio que utiliza a sua própria rosca interna para chamá-lo.

Pense nisso como uma fila contendo operações. Ela garante que essas operações, quando executado, irá fazê-lo apenas sobre os tópicos que chamaram seus métodos run() ou run_once(), ou quando se lida com soquetes e S assíncrona, a sua rosca interna.

A razão que você deve passá-lo para todos é basicamente que alguém tem que esperar para operações assíncronas para estar pronto, e, como afirmou em sua própria io_service documentação é o elo ASIO para que o sistema operacional / service O modo que abstrai da plataforma notificadores próprios assíncronas, como kqueue, /dev/pool/, epoll, e os métodos para operar sobre aqueles, como select().

Primeiramente eu acabo usando io_service para retornos de chamada demultiplex de várias partes do sistema e certifique-se que eles operam no mesmo segmento, eliminando a necessidade de bloqueios explícitos, uma vez que as operações são serializados. É uma linguagem muito poderosa para aplicações assíncronas.

Você pode dar uma olhada no núcleo documentação para obter uma melhor sensação de por que é necessário io_service eo que ele faz.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top