Ce n'boost::thread sleep ()?
Je suis actuellement en train de travailler sur une petite classe wrapper pour stimuler fil, mais je n'ai pas vraiment combien la fonction de veille fonctionne, c'est ce que j'ai obtenu jusqu'à présent:
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));
}
C'est comment j'ai mis en œuvre jusqu'à présent, mais je n'ai pas vraiment de comprendre comment la statique this_thread::méthode sleep sait que le fil de sommeil, par exemple, si plusieurs instances de mon fils wrapper sont actifs. Est-ce la bonne façon de les mettre en œuvre?
OriginalL'auteur user240137 | 2009-12-29
Vous devez vous connecter pour publier un commentaire.
boost::this_thread::sleep va dormir le thread courant. Seulement le fil lui-même peut trouver le sommeil. Si vous souhaitez faire un fil de sommeil, ajouter un peu de code de vérification dans le thread ou les interruptions d'utilisation.
Mise à JOUR: si vous utilisez un compilateur c++11 avec la mise à jour de la bibliothèque standard, vous aurez accès à std::this_thread::sleep_for et std::this_thread::sleep_until fonctions. Cependant, il n'existe aucune norme interruption mécanisme.
Ce que je veux dire par "code de vérification" est que dans le code exécuté par le thread donné, il y a quelque part un " si " qui vérifie si elle a besoin d'être dormi et faire si nécessaire. Par exemple, si votre thread exécute une fonction avec une grande boucle, puis de vérifier si elle a besoin de dormir (en cochant une valeur booléenne définie par votre code actuel par exemple) à chaque fin d'itération de la boucle peut être suffisant. Mais dans votre cas, vous ne voulez pas être intrusif de votre code de thread donc interruptions semble vraiment comme un meilleure alternative.
OriginalL'auteur Klaim
sommeil affecte toujours le thread courant (celui qui appelle la méthode).
OriginalL'auteur Benoît