Fonction sleep ?

cs_kilian Messages postés 2 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 18 février 2003 - 18 févr. 2003 à 16:52
peyramay Messages postés 3 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 22 juin 2010 - 22 juin 2010 à 15:28
bonjour la team
je souhaiterai savoir si qql1 connais une fonction equivalente a la fonction sleep... car pdt que la fonction sleep est activer, je ne peux la desactiver...
merci bcp
a bientot
kilian

5 réponses

crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 1
18 févr. 2003 à 17:29
Salut,

Tu peut faire la meme chose en faisant :

DWORD TimeInit = GetTickCount();
while ((GetTickCount()<(TimeInit+500)) && Condition)
{...Changement de Condition...}

500 est le nombre de miliseconde de ta tempo
et si condition n'est plus vrai, on sort de la boucle

c'est tout...

A+, Hart
0
jonathanmcdougall Messages postés 64 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 7 mars 2003
19 févr. 2003 à 02:55
> > bonjour la team
> > je souhaiterai savoir si qql1 connais une fonction equivalente a la fonction sleep... car pdt que la fonction sleep est activer, je ne peux la desactiver...
> > merci bcp
> > a bientot
> > kilian
>
> Tu peut faire la meme chose en faisant :
>
> DWORD TimeInit = GetTickCount();

GetTickCount()? Connait pas.

> while ((GetTickCount()<(TimeInit+500)) && Condition)

GetTickCount()? Connait pas.

> {...Changement de Condition...}
>
> 500 est le nombre de miliseconde de ta tempo
> et si condition n'est plus vrai, on sort de la boucle

Ah bon.

> c'est tout...

Pas vraiment. Ce n'est pas portable et kilian n'a pas mentionné son os.

En ne sachant pas l'os, la solution passe par les libraries standards :

# include <ctime>
# include

using namespace std;

int main()
{
// temp actuel
time_t t1 = time(0);

//5 secondes de pause
double pause = 5;

do
{
//nouveau temps
time_t t2 = time(0)

//faire des choses

//diff() retourne t2 - t1 en secondes
}while (diff(t2, t1) < pause);

}

Note que sleep() n'est pas standard et ne devrait pas être employée.
0
crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 1
19 févr. 2003 à 08:50
Pour info pour jonathan :

> Note que sleep() n'est pas standard et ne devrait pas être employée.

Tu dit ca mais si le sleep est la ce n'est pas pour rien, t'a jamais fait de multitache ? le sleep sert a endormir (comme sont nom l'indique) le thread en cours pour que les autres thread (si il y en a) puisse se réveiller. C'est sur que si ya qu'un seul thread ca donne une tempo...

Donc ca dépend de ce qu'il veut faire.

Et GetTickCount() fonctionne tres bien sur toutes plateformes !

Hart
0
jonathanmcdougall Messages postés 64 Date d'inscription dimanche 9 février 2003 Statut Membre Dernière intervention 7 mars 2003
19 févr. 2003 à 17:24
> Pour info pour jonathan :
>
> > Note que sleep() n'est pas standard et ne devrait pas être employée.
>
> Tu dit ca mais si le sleep est la ce n'est pas pour rien,

Il est là pour permettre aux gens qui utilisent un compilateur donné sous une plate-forme donnée puisse l'utiliser. gcc ne possède pas <conio.h> (à l'origine, c'était propre à Borland, je ne sais pas aujourd'hui).

>t'a >jamais fait de multitache ?

Quel rapport?

>le sleep sert a endormir (comme sont nom l'indique)

Effectivement

>le thread en cours pour que les autres thread (si il y en a)
>puisse se réveiller.

le C++ standard n'a aucune notion de thread. Et <conio.h> en a encore moins. Sleep(), dépendemment de l'implémentation, utilise habituellement un time_t (comme mon exemple) pour arrêter le programme, une boucle à vide.

N'oublie pas que <conio.h> est une librarie non-standard du C, basée sur le mode console (genre ms-dos), par exemple, les fonctions clrscr, gotoxy et textcolor. Sleep() n'a donc aucun rapport avec les threads.

>C'est sur que si ya qu'un seul thread ca donne une tempo...

Le C++ a été conçu pour pouvoir rouler de façon aussi efficace dans un grille-pain que dans un tank. "thread", "couleur", "souris", "écran", "internet", "fenêtre", "clavier", tout ça ça dépend de l'environnement. Chaque environnement fourni ses librairies (non standards donc) pour permettre d'y développer des applications qui utilisent toutes les capacité possibles.

> Donc ca dépend de ce qu'il veut faire.

Et oui, c'est la conclusion logique. Et pour m'auto-citer :

>> Pas vraiment. Ce n'est pas portable et kilian n'a pas
>> mentionné son os.

Si kilian nous avait dis "bonjour je programme sous windows xp avec vc++ .net et je cherche la façon la plus efficace de faire une pause de X secondes dans le programme", tout ceci aurait été évité. Mais en ne connaissant rien de tout ça, je ne pouvais que lui proposer une façon standard.

> Et GetTickCount() fonctionne tres bien sur toutes
>plateformes !

Faux, GetTickCount() est déclarée dans <windows.h>.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
peyramay Messages postés 3 Date d'inscription mardi 26 décembre 2000 Statut Membre Dernière intervention 22 juin 2010
22 juin 2010 à 15:28
Bonjour,

j'ai actuellement un problème avec la fonction sleep(0)dans une appli VC++ qui consomme la moitié du CPU sur un OS windows serveur 2003 avec un processeur multicore.

Quelqu'un aurait-il une idée de comment baisser la conso CPU en ne touchant qu'à la programmation de l'appli?

D'avance merci.
0
Rejoignez-nous