Bonjour,

(Topic d'origine : http://www.developpez.net/forums/sho...d.php?t=486240)

Je me trouve devant un problème de gestion de threads. En effet, j'ai une application (Linux) qui voudrait changer l'heure système. Or ce programme contient plusieurs boost::threads qui sont en pseudo-veille via les lignes suivantes :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
bool bQuit = false;
boost::thread t;
boost::xtime xt;
while(!bQuit)
{
	{
		// des choses
	}
	xtime_get(&xt, boost::TIME_UTC);
	xt.nsec += 20000;
	t.sleep(xt);
}
Or, que j'utilise les fonctions settimeofday();, system("date -s ..."); ou que je change l'heure dans le système via le gestionnaire, j'obtiens (et c'est logique), un blocage du sleep quand je mets une heure antérieure.

Je voulais savoir s'il existait, dans la bibliothèque boost::thread:: xtime ou dans boost::date_time, des fonctions pour mettre à jour l'heure système sans mettre en péril l'application threadée ?

ou alors existe-t-il un autre moyen de faire dormir mon thread, qui ne prendrait pas en compte l'heure actuelle, mais une sorte de timer... ?

Merci !

EDIT : en attendant, je fais un usleep(20000); ce qui n'est pas très propre vis-à-vis de boost, mais au moins ça bloque pas.