Quiero proporcionar un io_service
global que sea controlado por un subproceso global. Bastante simple, solo tengo la llamada del cuerpo del hilo io_service::run()
. Sin embargo, eso no funciona como run
(run_one
, poll
, poll_one
) devolver si no hay trabajo que hacer. Pero, si el hilo llama repetidamente a run(), estará ocupado cuando no haya nada que hacer.subproceso dedicado para io_service :: run()
Estoy buscando una manera de hacer que el hilo se bloquee mientras que no hay trabajo que hacer en el io_service. Podría agregar un evento global a la mezcla para que el hilo se bloquee. Sin embargo, eso requeriría que los usuarios del io_service
notificaran el evento cada vez que usaran el servicio. No es la solución ideal.
Nota: no hay globales reales y nunca uso eventos para concurrencia Simplemente simplifiqué el problema a mi necesidad exacta. El objetivo real es una subclase asio::deadline_timer
que no requiere un io_service
como parámetro de construcción.
no sabía nada de esto. +1, y eliminó mi sugerencia de hack-ishy. –
gracias, comencé a hacer el temporizador con infinito tiempo de espera solo para este propósito. Estoy perpetuamente impresionado con Asio. Se perdieron muy pocos casos de esquina. –