Warten
-
Hallo
Gibt es eine Funktion, die das Programm zum Warten bringt, ohne Ressourcen zu fressen aber auf ~5 ms genau ist?
MfG, EOutOfResources
-
Sleep(100); <- ? zeit in ms
glaub ich^^
-
dangerking schrieb:
Sleep(100); <- ? zeit in ms
glaub ich^^Jo, aber bei Sleep(5) wartet mein PC ca. 25 ms!
-
-
Hatte da mal was gebastelt, weiss nicht mehr wie genau das Teil war, aber auf 5ms genau sollte wohl kein Problem sein, leider kann ich dir keine Aussage zur CPU Last machen, da das damals für mich unerheblich war.
boolean Timer_SleepMicroSeconds(int micro_sec){ LARGE_INTEGER time1, time2; int aufloesung_ns, time_mircoseconds; if((micro_sec > 100000) || (QueryPerformanceFrequency(&time1) == FALSE)){ micro_sec /= 1000; if(micro_sec < 1){ micro_sec = 1; } Sleep(micro_sec); return FALSE; } aufloesung_ns = (int)(1000000000/time1.QuadPart); QueryPerformanceCounter(&time1); do{ QueryPerformanceCounter(&time2); time_mircoseconds = (((int)(time2.QuadPart - time1.QuadPart))*aufloesung_ns)/1000; if(time_mircoseconds < 0){ break; } }while(time_mircoseconds < micro_sec); return TRUE; }
-
-
Windows ist kein Echtzeitbetriebssystem. Wenn man einen Thread pausiert für eine bestimmte Zeit, dann heißt dass nur, dass er nach dieser Zeit wieder in den zuteilungsfähigen Zustand versetzt wird. Ob er auch genau dann CPU Zeit bekommt ist nicht gesagt. Es braucht nur einen Prozess geben, der mit einer höheren Priorität läuft oder das System auslastet, dann war es das mit deinen 5ms. Meist kann man davon ausgehen, dass in solchen Fällen ein Designfehler vorliegt.
-
Ach, wieder ein Schlaumeier.
Es gibt auch Fälle, wo es nicht tragisch ist wenn es mal länger dauert, im allgemeinen aber vorteilhaft wenn man die Wartezeit so genau wie möglich eingehalten wird.
Danke