Je travaille actuellement sur une petite classe wrapper pour le fil de boost, mais je ne comprends vraiment comment fonctionne la fonction de sommeil, ce que j'ai jusqu'à présent:Que fait boost :: thread sleep()?
BaseThread::BaseThread(){
thread = boost::thread();
bIsActive = true;
}
BaseThread::~BaseThread(){
join();
}
void BaseThread::join(){
thread.join();
}
void BaseThread::sleep(uint32 _msecs){
if(bIsActive)
boost::this_thread::sleep(boost::posix_time::milliseconds(_msecs));
}
Voilà comment je mis en œuvre jusqu'à présent, mais Je ne comprends pas vraiment comment la méthode static this_thread :: sleep sait quel thread doit dormir si par exemple plusieurs instances de mon wrapper sont actives. Est-ce la bonne façon de le mettre en œuvre?
vérifier le code comme quoi? les interruptions semblent être un bon moyen aussi. – user240137
Ce que je veux dire par "vérifier le code" est que dans le code exécuté par le thread donné, il y a quelque part un "if" qui vérifie s'il doit être dormi et le fait si nécessaire. Par exemple si votre thread exécute une fonction avec une grosse boucle, alors vérifier si elle a besoin de dormir (en vérifiant un ensemble booléen par votre code actuel par exemple) à chaque fin de l'itération de la boucle peut être suffisant. Mais dans votre cas, vous ne voulez pas être intrusif à votre code de fil, donc les interruptions semblent être une meilleure alternative. – Klaim