GetTickCount u.Ä.
-
Ja tut es, dann kommt es zu einem Überlauf.
-
ok, danke! GetTickCount() wird ja teilweise beim "Games proggen" verwendet (als Basic Timer). Zum Beispiel so:
DWORD Start = GetTickCount(); // PeekMessage(), Berechnungen, Rendern usw. while ((GetTickCount() - Start) < 40);Nehmen wir an ein Rechner würde gerade zufällig diese 49,7 Tage am Stück laufen, dann würde das Game welches vielleicht gerade läuft und mit GetTickCount() geproggt wurde also nur einen einzigen Frame zu schnell auf den Bildschrim bringen. Oder? Das ist ja nicht so wild.
Korrigiert mich falls ich falsch liege! Ansonsten Danke ich euch!
MfG dust :xmas1:
-
Mann nimmt da ja auch sowas wie QueryPerformanceTimer usw...
-
(D)Evil schrieb:
Mann nimmt da ja auch sowas wie QueryPerformanceTimer usw...
Also in den meisten DX-Büchern wird immer noch GetTickCount verwendet...
Außerdem musst Du den ermittelten Zeitwert von QueryPerformanceCounter ja auch in einer Variable speichern (LARGE_INTEGER). Wenn Du das ganze also ein bisschen laufen lässt, kann es da auch zu einem Überlauf kommen
(auch wenn das mglw. n bissl länger dauert).
-
Das mit dem Überlauf ist doch gar nicht schlimm. Solange garantiert ist dass der Abstand der Verwendung von GetTickCount < 49 Tage ist. Die Unsigned Arithmetik sorgt für korrektes Verhalten. Das ganze ist in der MSDN Doku zu GetTickCount korrekt beschrieben.
-
dust schrieb:
the return value could wrap
Was ist damit gemeint? (speziell: COULD WRAP)

hört sich an wie: könnte vielleicht, muss aber nicht.
wahrscheinlich weiss es m$ selber nicht so genau, weil es ihnen noch nie gelungen ist, eine windoze-box so lange auf den beinen zu halten
die aussage dieses satzes ist wohl: 'nach 49.7 tagen kann man sich nicht darauf verlassen, dass GetTickCount() irgend etwas vorhersehbares zurückliefert'
:xmas2:
-
Man könnte es doch einfach mal ausprobieren...
-
ten schrieb:
hört sich an wie: könnte vielleicht, muss aber nicht.
wahrscheinlich weiss es m$ selber nicht so genau, weil es ihnen noch nie gelungen ist, eine windoze-box so lange auf den beinen zu halten
die aussage dieses satzes ist wohl: 'nach 49.7 tagen kann man sich nicht darauf verlassen, dass GetTickCount() irgend etwas vorhersehbares zurückliefert'
:xmas2:Ich hab den Satz etwas aus dem Zusammenhang gerissen... les doch bitte selber die Doku

-
Jochen Kalmbach schrieb:
Ich hab den Satz etwas aus dem Zusammenhang gerissen... les doch bitte selber die Doku

hey, bei mir steht das so:
...Therefore, the time will wrap around to zero if the system is run continuously for 49.7 days.
das ist doch schon ein kleiner unterschied

-
ten schrieb:
hört sich an wie: könnte vielleicht, muss aber nicht.
wahrscheinlich weiss es m$ selber nicht so genau, weil es ihnen noch nie gelungen ist, eine windoze-box so lange auf den beinen zu halten
Den letzten Record eines Windows Servers hat
ten schrieb:
die aussage dieses satzes ist wohl: 'nach 49.7 tagen kann man sich nicht darauf verlassen, dass GetTickCount() irgend etwas vorhersehbares zurückliefert'
Quarck. Nach 49.7 Tagen wird klar und eindeutig wieder bei 0 angefangen.
Konnte ich für bestimmte Services bei uns beobachten! (Ja! über 49 Tage oben ohne Downzeit).Raimond Chen hat es immerhin bei einem Rechner mit 3 Jahren geschafft:
http://blogs.msdn.com/oldnewthing/archive/2005/04/11/407130.aspxEs gibt Server mit über 1000 Tagen!
http://uptime.netcraft.com/up/hosted?netname=MICROSOFT,131.107.0.0,131.107.255.255&order=max