Fonction sleep ?

Signaler
Messages postés
2
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
18 février 2003
-
Messages postés
3
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
22 juin 2010
-
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

Messages postés
260
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
27 août 2008

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
Messages postés
64
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
7 mars 2003

> > 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.
Messages postés
260
Date d'inscription
lundi 27 janvier 2003
Statut
Membre
Dernière intervention
27 août 2008

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
Messages postés
64
Date d'inscription
dimanche 9 février 2003
Statut
Membre
Dernière intervention
7 mars 2003

> 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>.
Messages postés
3
Date d'inscription
mardi 26 décembre 2000
Statut
Membre
Dernière intervention
22 juin 2010

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.