Actualmente estoy tratando de usar boost :: asio para algunas redes simples de tcp por primera vez, y ya me encontré con algo con lo que no estoy realmente seguro de cómo lidiar. Por lo que yo entiendo, el método io_service.run() es básicamente un bucle que se ejecuta hasta que no quede nada más por hacer, lo que significa que se ejecutará hasta que libere mi pequeño objeto de servidor. Como ya tengo algún tipo de configuración de mainloop, me gustaría actualizar el bucle de red manualmente desde allí simplemente por simplicidad, y creo que io_service.poll() haría lo que yo quisiera, algo como esto:Boost :: Asio: io_service.run() vs poll() o cómo puedo integrar boost :: asio en mainloop
void myApplication::update()
{
myIoService.poll();
//do other stuff
}
Esto parece funcionar, pero todavía me pregunto si hay un inconveniente de este método, ya que no parece ser la forma más común de lidiar con los servicios boost :: asios io. ¿Es este un enfoque válido o debería usar io_service.run() en un hilo adicional que no bloquea?
'io_service' no necesariamente se detiene después de que' io_service :: poll' devolvió. ¿Por qué necesita 'io_service :: reset' antes de' 'io_service :: run' o' io_service: poll'? – updogliu