usleep() oder nanosleep() unter windows
-
hi
ich steuere zur zeit mit dem parallelport von win2k aus ein t6963c grafik display an.
dazu benötige ich jedoch eine funktion, um ca 90 und 150 nanosekunden zu warten.
unter linux gibt es dafür nanosleep()nun suche ich eine implementierung von nanosleep oder zur not auch usleep unter windows
ich denke ich könnte das auch mit ner warteschleife und nem performancecounter machen, wobei ich mir die frequenz des counters noch nicht angeschaut hab, läuft der im ns bereich?
aber die warteschleife verbrät die ganze cpu leistung im nichtstun, also hat irgendwer ne kluge idee?
nen cpu timer benutzen vielleicht?bye
BlueScreen32.dll
-
falls es jemanden interessiert, ich hab selbst die lösung gefunden:
einen waitable timer (mit einer auflösung von 100 ns)in der msdn gibts sogar ein beispiel dazu:
#include <windows.h> #include <stdio.h> int main() { HANDLE hTimer = NULL; LARGE_INTEGER liDueTime; liDueTime.QuadPart=-100000000; // negativer Wert= relative Zeit, positiv=absoluter Zeit (siehe SetWaitableTimer) // Create a waitable timer. hTimer = CreateWaitableTimer(NULL, TRUE, "WaitableTimer"); if (!hTimer) { printf("CreateWaitableTimer failed (%d)\n", GetLastError()); return 1; } printf("Waiting for 10 seconds...\n"); // Set a timer to wait for 10 seconds. if (!SetWaitableTimer(hTimer, &liDueTime, 0, NULL, NULL, 0)) { printf("SetWaitableTimer failed (%d)\n", GetLastError()); return 2; } // Wait for the timer. if (WaitForSingleObject(hTimer, INFINITE) != WAIT_OBJECT_0) printf("WaitForSingleObject failed (%d)\n", GetLastError()); else printf("Timer was signaled.\n"); return 0;