GetSystemTime und Uhr-Thread - 100% Systemauslastung.
-
Hallo und guten Tag.
Wenn ich die Windows Funktion GetSystemTime() verwende, dann bekomme ich nicht die wirkliche Systemzeit, welche ja dann UTC vorliegt, was ja Greenwich entspricht.
Wenn ich die Zeit z.B. um 15.00Uhr aufrufe, dann bekomme ich 13.00Uhr zurück.
Sollte ich nicht 14.00Uhr zurückbekommen? Weil Greenwich ist ja -1.00h?Des Weiteren verwende ich einen Thread, mit welchem ich die Zeit documentiere.
D.h. dieser thread ist ein Counter für die Zeit.Jetzt benötigt dieser thread aber wieder einmal 100% CPU Leistung.
Wie kann ich es so machen, dass der nicht 100% CPU Leistung benötigt?Die Game-Loop, die ich da verwende, benötigt z.B. nur das was nötig ist. Also nicht durchgehend 100% CPU Leistung. Der thread jetzt aber schon.
Ich hätte das gerne so, dass auch dieser "Timethread" nur das benötigt, was er wirklich braucht, und das soll nur die Leistung sein, die nötig ist um den Zeituntetschied zu berechnen und gegebenenfalls die Zahlen hochzählen.
Mir ist schon klar das dieser thread durchgehend ausgeführt wird und das dann eben die Zeitberechnung, die im thread durchgeführt wird, auch durchgehend ausgeführt wird. Wie kann ich das also so begrenzen, dass ich nicht durchgehend 100% Systemauslastung habe?
Mit Sleep()? - Nein.
Ich mach das mit dem "Performance Counter", also die Zeitdifferenz errechnen.
Da kann ich ja nicht einfach Sleep() dazwischen haun. Oder?Ich hab mir gedacht, ich mach das mit der Zeit in einem extra thread, da ja mal Zeitengpässe im Heuptprogramm entstehen können, so dass die Zeit ungenau wird.
So z.B. mit WM_TIMER. Oder kann das nicht passieren?Nichtsdestotrotz, wie kann man das mit den 100% Systemauslastung begrenzen?
Danke und Gruß
Alex
-
DeineMutter schrieb:
Hallo und guten Tag.
Wenn ich die Windows Funktion GetSystemTime() verwende, dann bekomme ich nicht die wirkliche Systemzeit, welche ja dann UTC vorliegt, was ja Greenwich entspricht.
Wenn ich die Zeit z.B. um 15.00Uhr aufrufe, dann bekomme ich 13.00Uhr zurück.
Sollte ich nicht 14.00Uhr zurückbekommen? Weil Greenwich ist ja -1.00h?Wir haben grad noch Sommerzeit

-
Ach so... Danke.
Daran hab ich nicht gedacht.Und was ist mit der CPU Auslastung?
Weiß das keiner?Gruß
Alex
-
Sleep(1000);
-
du schreibst was von timer - da denk ich an MFC - da kann man festlegen in welchen abstaenden der timerdurchlauf funktionieren soll in ms {millisekunden}
SetTimer (1, 1000, NULL);das setzt den timer auf 1000ms
weiss nur nicht obs sowas in der winapi gibt - hab grad den petzold nicht zur hand {o;
-
Mr Evil schrieb:
du schreibst was von timer - da denk ich an MFC - da kann man festlegen in welchen abstaenden der timerdurchlauf funktionieren soll in ms {millisekunden}
SetTimer (1, 1000, NULL);Das ist aber keine MFC, sondern WinAPI
.
-
darum sagte ich ja:
[quote=Mr Evil]"weiss nur nicht obs sowas in der winapi gibt - hab grad den petzold nicht zur hand {o;"[/quote]
evtl gibt was aehnliches {o;
-
Ja, darum schreib ich ja auch in ins Win32 API board...

Aber nochmal.
Was ist wenn die Main-loop etwas länger zum rendern benötigt.
Sagen wir mal, die Scene braucht länger als eine Sekunde, was natürlich nicht so toll wäre...
Dann wird ja die WM_TIMER message auch nicht nach einer Sekunde abgearbeitet, sondern etwas später. Das geht doch nicht!!!Wie auch immer, ich habs ja oben schon deutlich genug geschrieben.
Danke für die Lösung des ersten ProblemsGruß
Alex