Attente passive sur une durée prédeterminée

Attente passive sur une durée prédeterminée - C++ - Programmation

Marsh Posté le 17-12-2004 à 13:30:41    

Je souhaite realiser une attente passive connaissance la durée de l'attente (en secondes ou ticks).  Un sleep pourrait convenir mais existe-t-il un équivalent de mutex ou variable conditionnelle chronométrée ?


---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 17-12-2004 à 13:30:41   

Reply

Marsh Posté le 17-12-2004 à 13:31:55    

heuh ? tu peux etre plus précis ? pouquoi pas un sleep ?  
 
certains fonction de l'api windows pour les threads prennent un timeout en param


Message édité par chrisbk le 17-12-2004 à 13:32:16
Reply

Marsh Posté le 17-12-2004 à 13:35:23    

Sauf erreur de ma part, sleep est gourmand en CPU. N'y a t il pas une méthode plus fine ?


---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 17-12-2004 à 13:36:06    

Code :
  1. for (int i=0; i<2^32: i++)
  2. {}


[:joce]
 
sinon je plusun chris pour les threads en win32 :o


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-12-2004 à 13:36:11    

Tu fais erreur. Sleep est passif.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-12-2004 à 13:36:53    

xterminhate a écrit :

Sauf erreur de ma part, sleep est gourmand en CPU. N'y a t il pas une méthode plus fine ?


y'a erreur de ta part

Reply

Marsh Posté le 17-12-2004 à 13:36:54    

xterminhate a écrit :

Sauf erreur de ma part, sleep est gourmand en CPU.


pardon ? [:heink]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-12-2004 à 13:38:09    

Par curiosité, comment l'OS implémente le sleep() en général ?


---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 17-12-2004 à 13:39:22    

Citation :


The sleep() function shall cause the calling thread to be suspended from execution until either the number of realtime seconds specified by the argument seconds has elapsed or a signal is delivered to the calling thread and its action is to invoke a signal-catching function or to terminate the process. The suspension time may be longer than requested due to the scheduling of other activity by the system.


http://www.opengroup.org/onlinepub [...] sleep.html


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 17-12-2004 à 13:40:43    

Je sais pas pour le Sleep, mais je serais pas étonné que ce soit un truc du genre:

Code :
  1. void Sleep( int ms )
  2. {
  3.     WaitForSingleObject(
  4.         GetCurrentThread(),
  5.         ms );
  6. }


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-12-2004 à 13:40:43   

Reply

Marsh Posté le 17-12-2004 à 13:45:20    

Tres bien alors, Sleep répond à ma question. Je me souviens d'une implémentation du sleep basée sur une boucle 'for' et d'un calcul de temps de cycle CPU.... ca devait être dans les années 50 ! J'ai peu évolué depuis ;-)


---------------
Cordialement, Xterm-in'Hate...
Reply

Marsh Posté le 17-12-2004 à 14:02:05    

Tu dois faire référence à ça:
http://msdn.microsoft.com/library/ [...] _clock.asp
c'est juste un exemple d'utilisation de clock, pas la vraie fonction sleep.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-12-2004 à 16:16:11    

Gaffe à la différence entre "sleep(unsigned seconds)" et "Sleep(DWORD dwMilliseconds)". Le premier fait partie d'une lib "standard" C et le second est un appel à l'API Win32.
Pour le premier (sleep) on peut imaginer que les conceptUeurs de la lib ont bien fait leur boulot et ne bouffent pas tout le CPU à attendre. Le second signale au système de ne plus donner de temps CPU au thread avant la fin de la tempo et donc ne prend pas de ressources, au contraire.

Reply

Marsh Posté le 17-12-2004 à 16:57:30    

Il me semble que sleep n'est pas standard C, mais POSIX.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
Reply

Marsh Posté le 17-12-2004 à 18:18:49    

ce qui ne m'etonnerait pas vu qu'il n'y a rien de stdard en C pour les threads

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed