Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1429 connectés 

  FORUM HardWare.fr
  Programmation

  [Visual C++] precision de Sleep

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Visual C++] precision de Sleep

n°44021
SoWhatIn22
Posté le 02-07-2001 à 10:50:53  profilanswer
 

hello,
 
je suis intrigué:
 
1./
for(int i=0; i<5000; ++i)
{
   Sleep(1);
}
 
vs
2./
for(int i=0; i<50; ++i)
{
   Sleep(100);
}
 
pour 2./, je sors de la boucle eviron 5s apres y être entré-OK
pour 1./, la boucle dure plutot 30s que 5s...
 
Si qq1 a une explicatrion crédible, je suis preneur ;)))

mood
Publicité
Posté le 02-07-2001 à 10:50:53  profilanswer
 

n°44035
BENB
100% Lux.
Posté le 02-07-2001 à 16:08:08  profilanswer
 

SoWhatIn22 a écrit a écrit :

hello,
 
je suis intrigué:
 
1./
for(int i=0; i<5000; ++i)
{
   Sleep(1);
}
 
vs
2./
for(int i=0; i<50; ++i)
{
   Sleep(100);
}
 
pour 2./, je sors de la boucle eviron 5s apres y être entré-OK
pour 1./, la boucle dure plutot 30s que 5s...
 
Si qq1 a une explicatrion crédible, je suis preneur ;)))  




 
Bof... ca fait quoi un petit facteur 1000... :D
c'est microsoft...

n°44044
Carbon_14
Posté le 02-07-2001 à 16:20:30  profilanswer
 

C'est peut-être approximatif le résultat de Sleep(durée).. C'est au moins ce qu'on attend, voire plus..
 
Cela serait interessant de savoir à partir de quelle valeur il y a "divergence". Jusqu'à 65 milliseconde, c'est-y bon ?
Vu qu'il y a un tick d'horloge tout les 65 ms, peut-être que le "raccordement" est vaseux (si je puis me permettre)...
 
Ou le compilateur qui fait des siennes en optimisant de travers.
 
C'est reproductible ? (Si une appli en tâche de fond monopolyse le temps CPU, il y a du retard).

n°44069
BENB
100% Lux.
Posté le 02-07-2001 à 17:04:07  profilanswer
 

CARBON_14 a écrit a écrit :

C'est peut-être approximatif le résultat de Sleep(durée).. C'est au moins ce qu'on attend, voire plus..
 
Cela serait interessant de savoir à partir de quelle valeur il y a "divergence". Jusqu'à 65 milliseconde, c'est-y bon ?
Vu qu'il y a un tick d'horloge tout les 65 ms, peut-être que le "raccordement" est vaseux (si je puis me permettre)...
 
Ou le compilateur qui fait des siennes en optimisant de travers.
 
C'est reproductible ? (Si une appli en tâche de fond monopolyse le temps CPU, il y a du retard).  




Voir plus ? voire moins tu veux dire ?
sleep() l'argument est donne en secondes normalement...

n°44075
SoWhatIn22
Posté le 02-07-2001 à 17:20:26  profilanswer
 

>sleep() l'argument est donne en secondes normalement
 
euh, non. dans le MSDN:
-----------------
The Sleep function suspends the execution of the current thread for a specified interval.  
 
VOID Sleep(
  DWORD dwMilliseconds   // sleep time in milliseconds
);
-----------------
 
>C'est reproductible ?
sans pb. Je lance un thread qui ne fais que ca. Et il n'y a pas d'autre appli gourmande. Et la charge CPU est à zéro...

n°44080
SoWhatIn22
Posté le 02-07-2001 à 17:37:33  profilanswer
 

bon, a priori, ca doit être du au scheduling de NT. Sachant que le scheduler doit allouer a peu pres 20ms à chaque thread, celui-ci fait a peu pres 20 iterations. Mais quand le scheduler rend actif un autre thread, le Sleep(1) n'est pas executé.
donc voila.
Je vais donc faire autrement!
 
merci et a+

n°44093
janoscoder
Posté le 02-07-2001 à 19:06:10  profilanswer
 

Sleep, pour ne pas encombrer le processeur inutilement dit au scheduleur qu'il peut passer à un autre et ne pas revenir sur le thread appelant avant que sleep est écoulé. Donc sleep a une précision qui dépend du nombre de threads de même priorité lancés.


---------------
-----------------------
n°44183
BENB
100% Lux.
Posté le 03-07-2001 à 09:56:02  profilanswer
 

SoWhatIn22 a écrit a écrit :

>sleep() l'argument est donne en secondes normalement
 
euh, non. dans le MSDN:
-----------------
The Sleep function suspends the execution of the current thread for a specified interval.  
 
VOID Sleep(
  DWORD dwMilliseconds   // sleep time in milliseconds
);
-----------------
 
>C'est reproductible ?
sans pb. Je lance un thread qui ne fais que ca. Et il n'y a pas d'autre appli gourmande. Et la charge CPU est à zéro...  




Pardon j'ai confondu Sleep et sleep...
 

Citation :

unsigned int sleep(unsigned int seconds);
 
 DESCRIPTION
      sleep() suspends the current process from execution for the number of
      seconds specified by the argument.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  [Visual C++] precision de Sleep

 

Sujets relatifs
visual studio 6VISUAL INTERDEV / IIS 5 : trouve pas le serveur !!!
[Visual C++ 6] importer une dll ds un projetvisual C++ et SQL-DMO
Problème OCX lorsque j'execute mon prog visual Basic...Visual Basic 6 & windows 2000 = problème !!!!!!!!
[Visual C++] Effacer et écrire dans un fichierVisual Basic 6. ??? des liens pour des cours ?
[Visual C++] Dans un projet SDI, problème de changement de vue[Visual C++] Titre en couleur
Plus de sujets relatifs à : [Visual C++] precision de Sleep


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR