Puis-je créer un logiciel watchdog timer thread en C++ à l'aide de Boost Signals2 et Fils?

Je suis en cours d'exécution de la fonction Foo de quelqu'un d'autre de la bibliothèque dans un seul thread de l'application actuellement. La plupart du temps, je fais un appel à Toto et il est vraiment rapide, quelques fois, je fais un appel à Toto et cela prend une éternité. Je ne suis pas un homme patient, si Toto est va prendre une éternité, je veux arrêter l'exécution de Foo et ne pas l'appeler avec ces arguments.

Quelle est la meilleure façon d'appeler Foo de manière contrôlée (mon environnement actuel est POSIX/C++) que j'ai arrêter l'exécution après un certain nombre de secondes. J'ai l'impression que la bonne chose à faire ici est de créer un deuxième thread appeler Foo, alors que dans mon thread principal j'ai créer une fonction timer qui va finalement le signal de la deuxième thread si elle est à court de temps.

Est-il une autre, plus apt modèle (et la solution)? Si non, serait de Boost Signals2 bibliothèque et les Threads faire l'affaire?

OriginalL'auteur Aron Ahmadia | 2009-06-18