Wie können wir unsere eigene Timer-Funktion in Windows implementieren, ohne Bibliotheksfunktionen zu verwenden? Sollten wir mit Assembleranweisungen umgehen?Wie Implementieren des Usermode-Timers in C?
Antwort
Dies hängt von der Genauigkeit und Auflösung ab, die Sie benötigen.
Angenommen, Sie benötigen mehr als die zweite Genauigkeit, ist es beliebt, die RDTSC
Anweisung einzupacken/zu verwenden. Sie können aber auch einfach die Win32-API verwenden, die QueryPerformanceCounter()
ist dafür weit verbreitet.
Viele APIs wie Threading Building Blocks von Intel (http://threadingbuildingblocks.org), OpenMP (http://openmp.org), SDL (http://libsdl.org) oder SFML (http://sfml-dev.org), und ich denke, auch OpenGL (http://opengl.org) um einen Zeitgeber einen Timer oder einen Wrapper implementieren.
Sagen "ohne Bibliothek Funktionen zu verwenden" ist ein bisschen vage: Welche Bibliothek meinst du speziell? Am Ende müssen Sie eine Bibliotheksfunktion oder Inline-Assemblierung verwenden, da C++ keine Timing-Funktionalität in der Kernsprache hat. Und ohne einen Timer-Prozessor oder irgendeine andere Timing-Hardware in welcher Form (*), gibt es keine Möglichkeit, die Zeit zu bestimmen, nicht vage, nicht genau.
(*) Dazu gehören Internet Time Provider.
keine Standard-C-Bibliotheksfunktionen oder Windows-APIs verwenden – sarat
erhalten Sie die Atomuhrzeit von einem Internet-Zeitdienst.
Sonst werden Sie immer mit einer Art von Bibliotheksfunktionen arbeiten, mit denen Sie mit dem BIOS sprechen können, das ist der Teil, der das Tick-Tack vom Quarz für das OS sichtbar macht.
sind sie nicht in stdlib? – cobbal
Ohne eine einzige Bibliotheksfunktion zu verwenden? Oder nicht mit bestimmten Funktionen? Ich sehe nicht, wie Sie ohne lib-Aufruf Systemzeit bekommen können. – Paxic
Ich muss wissen, wie eine einfache Zeit implementiert werden kann. Natürlich ist es möglich, auf Plattform-APIs zu vertrauen. Ohne das zu nutzen, wie kann man das umsetzen? – sarat