Je souhaite fournir un io_service
global piloté par un thread global. Assez simple, je viens d'appeler le corps du fil io_service::run()
. Cependant, cela ne fonctionne pas comme run
(run_one
, poll
, poll_one
) retourner s'il n'y a pas de travail à faire. Mais, si le thread appelle de manière répétée run(), il passera en boucle quand il n'y a rien à faire.thread dédié pour io_service :: run()
Je suis à la recherche d'un moyen de bloquer le thread tant qu'il n'y a pas de travail à faire dans le io_service. Je pourrais ajouter un événement global au mélange pour le fil à bloquer. Cependant, cela obligerait les utilisateurs du io_service
à notifier l'événement chaque fois qu'ils utilisent le service. Pas la solution idéale.
Remarque: il n'y a pas de globals réels et je n'utilise jamais d'événements pour la simultanéité J'ai simplement simplifié le problème à mon besoin exact. Le véritable objectif est une sous-classe asio::deadline_timer
qui ne nécessite pas de io_service
comme paramètre de construction.
Je ne savais pas celui-ci. +1, et supprimé ma suggestion hack-ishy. –
merci, j'avais commencé à faire la minuterie avec et le délai d'expiration à cette fin. Je suis perpétuellement impressionné par Asio. Ils ont manqué très peu de cas d'angle. –