Comment dormir un C++ Boost Fil
Semble impossible de dormir un thread à l'aide de boost::thread.
Méthode de sommeil nécessite une system_time mais comment puis-je construire?
Regardant à l'intérieur des bibliothèques n'a pas vraiment d'une grande aide...
Fondamentalement, j'ai un fil
l'intérieur de la fonction que je passe à ce fil comme point d'entrée, je voudrais appeler quelque chose comme
boost::this_thread::sleep
ou quelque chose, comment faire?
Merci
Vous devez vous connecter pour publier un commentaire.
Selon votre version de Boost:
Soit...
Ou...
Vous pouvez également utiliser microsecondes, secondes, minutes, heures, et peut-être quelques autres, je ne suis pas sûr.
boost::this_thread::sleep_for
au lieu deboost::this_thread::sleep
, ce dernier est obsolète, voir boost::this_thread::sleep.À partir d'un autre poste, j'ai appris
boost::this_thread::sleep
est déconseillé pour Stimuler la v1.5.3: http://www.boost.org/doc/libs/1_53_0/doc/html/thread/thread_management.htmlAu lieu de cela, essayez de
par exemple
Ou peut-être essayer
J'ai été en utilisant Boost v1.53 avec le obsolète
sleep
fonction, et il aperiodically s'est écrasé le programme. Quand j'ai changé les appels à lasleep
fonction des appels à lasleep_for
fonction, le programme a cessé de s'écraser.tout d'abord
deuxièmement
J'ai appris à la dure que, au moins dans MS Visual Studio (essayé 2013 et 2015), il est l'énorme différence entre
et
lorsque l'intervalle est plus petit que certains plutôt substantiel seuil (j'ai vu seuil de 15000 microsecondes = 15 millisecondes).
Si SmallIterval est petit, sleep() ne instantanée interruption. sleep(100 mks) se comporte comme le sommeil(0 mks).
Mais sleep_for() pour l'intervalle de temps plus petit qu'un seuil de pauses pour que l'ensemble du seuil. sleep_for(100 mks) se comporte comme sleep_for(15000 mks).
Comportement pour des intervalles de plus de seuil et pour la valeur 0 est la même.