Desidero fornire un valore globale io_service
guidato da un thread globale. Abbastanza semplice, ho appena chiamato il thread body io_service::run()
. Tuttavia, ciò non funziona come run
(, poll
, poll_one
) restituire se non c'è lavoro da fare. Ma, se il thread chiama ripetutamente run(), verrà occupato quando non c'è nulla da fare.thread dedicato per io_service :: run()
Sto cercando un modo per bloccare il thread mentre non c'è lavoro da fare nel io_service. Potrei aggiungere un evento globale al mix per il thread da bloccare. Tuttavia, ciò richiederebbe agli utenti di io_service
di notificare l'evento ogni volta che utilizzavano il servizio. Non la soluzione ideale.
Nota: non ci sono globali effettivi e non uso mai eventi per la concorrenza ho semplicemente semplificato il problema fino alla mia esatta esigenza. Il vero obiettivo è una sottoclasse asio::deadline_timer
che non richiede uno io_service
come parametro di costruzione.
non sapeva di questo. +1, e cancellato il mio suggerimento hack-ishy. –
grazie, avevo iniziato a fare il timer con e il timeout infinito solo per questo scopo. Sono perennemente impressionato da asio. Hanno perso pochissimi casi d'angolo. –