Estaba revisando el asio chat server example. Mi pregunta es sobre su uso de la función io_service.run()
. La documentación de la función io_service.run()
dice:boost asio io_service.run()
Los bloques de función run() hasta que todo el trabajo ha terminado y no hay manipuladores más para ser despachados, o hasta que el io_service ha sido se detuvo. Varios hilos pueden llamar a la función run() para configurar un grupo de hilos desde el cual el io_service puede ejecutar manipuladores. Todos los subprocesos que están esperando en el grupo son equivalentes y el io_service puede elegir cualquiera de ellos para invocar un controlador. La función run() se puede llamar de nuevo de manera segura una vez que se ha completado solo después de una llamada a reset().
Dice que la función de ejecución volverá, y supongo que cuando vuelva, el hilo de la red se detiene hasta que se vuelva a llamar. Si eso es cierto, ¿por qué no se llama a la función de ejecución en un bucle, o al menos se le da su propio hilo? la función io_service.run()
es un misterio para mí.
Comprobar también la respuesta aquí: http://stackoverflow.com/questions/4705411/boostasio-io-service-run-vs-poll-or-how-do-i-integrate-boostasio-in -ma – serxio