Question

Je dois tous mes fils pour vérifier périodiquement qu'ils devraient être encore en cours d'exécution, afin qu'ils puissent auto-fin lorsque la fin du programme. Pour tous, mais l'un d'eux, cela est juste une question de vérification d'une variable d'état, mais le dernier est un fil d'interaction de l'utilisateur et sa boucle attendra indéfiniment l'entrée utilisateur, vérifier que la variable d'état lorsque l'utilisateur entre une instruction . A ce stade, le programme échoue de toute façon puisque la classe ne peut pas fonctionner correctement quand il ne fonctionne pas. Idéalement, cependant, je voudrais ne pas arriver à ce point.

Je pense que la meilleure solution, si possible, un délai d'attente sur le getline, mais dans le cas où il est impossible ou une bonne option, je suis ouvert à toute option qui permettra au fil de mettre fin d'une manière ordonnée .

En aparté, je vois beaucoup de mentions de std :: getline. getline semble fonctionner si j'utilise l'espace de noms ou non. Est-ce qu'un un alias de l'autre, et qui est celle qui convient à utiliser?

Était-ce utile?

La solution

Il n'y a pas (standard) moyen de définir un délai d'attente sur std::getline. En particulier, la bibliothèque standard C de ne connaît pas l'existence de fils

Pour répondre à votre deuxième question, est celle de l'espace de noms de la version conforme aux normes de std::getline.

Autres conseils

Probablement la meilleure façon pour vous de le faire serait d'essaimer encore un autre thread, dans le seul but d'exécuter getline().

google, ce résultat , qui vous donne un exemple, bien qu'il soit fortement dépendante de Win32. Cependant, vous devriez être en mesure de le porter à quel fil jamais bibliothèque que vous utilisez.

Si votre fils n'ont pas le nettoyage qu'ils ont besoin de faire, une solution de rechange serait d'appeler exit lorsque vous souhaitez mettre fin à votre processus. exit mettra fin à toutes les discussions et mettre fin au processus.

Vous avez besoin d'un autre thread pour signaler le fil de l'utilisateur.
Comment vous faites cela dépendra de la bibliothèque de threads que vous utilisez.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top