J'ai développé un fil d'interrogation simple (en utilisant Boost 1.39.0) qui vérifie si une ressource de données a été accédée dans un laps de temps donné et efface la connexion sinon. Le code pertinent peut être revu ci-dessous.Boost interruption dans l'implémentation d'invitation naïve
Mes préoccupations sont de deux ordres:
1) utilise d'interruption sur un sommeil approprié pour fermer le fil en toute sécurité? L'interruption va-t-elle attendre que le sommeil se termine ou va-t-elle s'interrompre immédiatement? Vous pouvez voir que j'attrape une exception thread_interrupted juste pour échapper la boucle while.
2) Utilise-t-elle un fil qui passe le plus clair de son temps à gaspiller? Existe-t-il un meilleur modèle pour implémenter un mécanisme d'interrogation simple en C++ standard?
boost::xtime xt;
while (1) {
try {
boost::xtime_get(&xt, boost::TIME_UTC);
xt.sec += _sleep_secs;
boost::thread::sleep(xt);
//
// logic to check resource access
// etc.
}
catch(boost::thread_interrupted const&) {
return;
}
}
Merci, que je suis en cours d'exécution de mon dev environemnt et il semble fonctionner comme prévu. J'ai besoin de passer du temps à bien comprendre le filetage. – Michael