2009-03-19 8 views
2

Comment pouvons-nous mettre en œuvre notre propre fonction de minuterie dans Windows sans utiliser les fonctions de la bibliothèque? Devrions-nous traiter des instructions en langage assembleur?Comment implémenter le temporisateur usermode en C?

+0

ne sont-ils pas en stdlib? – cobbal

+0

Sans utiliser une seule fonction de bibliothèque? Ou ne pas utiliser des fonctions spécifiques? Je ne vois pas comment vous pouvez obtenir l'heure du système sans un appel lib. – Paxic

+0

J'ai besoin de savoir comment un simple temps peut être implémenté. Bien sûr, il est possible de s'appuyer sur des API de plate-forme. Sans utiliser cela, comment est-ce possible? – sarat

Répondre

4

Cela dépend de la précision et de la résolution dont vous avez besoin.

En supposant que vous ayez besoin d'une précision supérieure à la seconde, il est courant d'utiliser l'instruction RDTSC. Mais vous pouvez également utiliser l'API Win32, le QueryPerformanceCounter() est largement utilisé pour cela.

0

De nombreuses API comme blocs Threading Building Intel (http://threadingbuildingblocks.org), OpenMP (http://openmp.org), SDL (http://libsdl.org) ou SFML (http://sfml-dev.org), et je pense aussi OpenGL (http://opengl.org) mettre en œuvre une minuterie ou une enveloppe autour d'une minuterie. Dire "sans utiliser les fonctions de la bibliothèque" est un peu vague: Quelle bibliothèque voulez-vous dire spécifiquement? En fin de compte, vous devez utiliser une fonction de bibliothèque, ou un assemblage en ligne, car C++ n'a pas de fonctionnalité de temporisation dans le langage principal. Et sans aucun processeur de minuterie ou autre matériel de chronométrage sous quelque forme que ce soit (*), il n'y a aucun moyen de dire l'heure, pas vaguement, pas exactement.

(*) Cela inclut les fournisseurs de temps Internet.

+0

n'utilisant aucune fonction de bibliothèque C standard ou API Windows – sarat

0

obtenir l'heure atomclock à partir d'un service d'heure Internet. Sinon, vous aurez toujours affaire à une sorte de bibliothèque-fonctions avec laquelle vous pouvez parler au BIOS, qui est la partie qui rend le tick-tock du Quartz visible à l'OS.