Sleep() fonction de l'utilisation
Ceci est un exemple de pgm pour vérifier la fonctionnalité de Sleep() de la fonction.C'est une démo que depuis iam à l'aide de cette fonction sleep() et de l'horloge() les fonctions de mon application de développement.
//TestTicks.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include<iostream>
#include<iomanip>
#include <Windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
int i, i2;
i = clock();
//std::cout<<" \nTime before Sleep() : "<<i;
Sleep(30000);
i2 = clock();
//std::cout<<" \nTime After Sleep() : "<<i2;
std::cout<<"\n Diff : "<<i2 -i;
getchar();
return 0;
}
dans ce code je suis de calculer le temps d'utilisation de l'horloge() avant et après la fonction de veille.
Depuis iam à l'aide de sommeil(30000), le temps diff serait au moins 30000.
J'ai couru ce prgm de nombreuses fois. et la sortie imprimée 30000, 30001, 30002. Ceux-ci sont ok. Mais quelques fois je suis arriver à des valeurs comme la 29999 et 29997.Comment cela est possible, depuis que j'ai mis 30000 sommeil b/w l'horloge().
Merci de me donner la raison.
OriginalL'auteur Aneesh Narayanan | 2012-03-22
Vous devez vous connecter pour publier un commentaire.
Selon http://msdn.microsoft.com/en-us/library/windows/desktop/ms686298(v=vs. 85).aspx:
Il signifie simplement que la fonction de Veille ne sera jamais le sommeil exactement à la quantité de temps donnée, mais aussi près que possible compte tenu de la résolution de l'ordonnanceur.
La même page vous donne une méthode pour augmenter la résolution du timer si vous en avez vraiment besoin.
Il y a aussi des minuteurs de haute résolution qui peut mieux l'adapter à vos besoins.
J'ai également découvert que l'horloge() la fonction travaille sur des processus de tops d'horloge. Mais le Sleep() appartiennent seulement VS..???
horloge appartient à la bibliothèque C standard, alors que le Sommeil est une fonction Windows API. Sur les systèmes GNU, l'équivalent serait nanosleep.
OriginalL'auteur SirDarius
Sauf si vous utilisez un OS temps réel, qui est très attendue.
Le Système d'Exploitation de planifier et d'exécuter de nombreux autres processus, afin de réveiller la vôtre " peut ne pas correspondre à l'heure exacte que vous vouliez dormir.
OriginalL'auteur manasij7479
La clock() fonction indique combien de temps processeur par le processus appelant a utilisé.
Vous pouvez remplacer l'utilisation de l'horloge() par la fonction GetSystemTimeAsFileTime
afin de mesurer le temps avec plus de précision.
Vous pouvez aussi essayer d'utiliser timeBeginPeriod avec wPeriodMin retourné par un appel à timeGetDevCaps pour obtail maximum de la fréquence d'interruption.
Afin de synchroniser l'dort avec le système d'interruption de la période, je voudrais aussi suggérer
pour avoir un sommeil(1) de l'avant de la première "capture en temps".
Ce faisant, le "trop courts" disparaîtra.
Plus d'informations abount sommeil peut être trouvé ici
OriginalL'auteur Arno
vraiment, merci; 🙂
OriginalL'auteur shabab alam