Am Samstag, 11. September 2004 18:44 schrieb Eric Schaefer:
Am Fr, den 10.09.2004 schrieb Friedrich W. H. Kossebau um 19:40:
queryPerformanceCounter(Start);
queryPerformanceCounter(Now);
[...]
Aber noch was anderes: Habe ich richtig gerechnet, daß Now-Start wohl bei normaler Nutzung auf einem Arbeitsplatzrechner niemals einen Fehler erzeugen kann? 2^63-1 / 2*10^9 (GHz) / 60 (sec) / 60 (min) / 24 (h) = 53375.99558365032 (Tage)?
Theoretisch ja.
Aber: QueryPerformanceCounter() ist Win32-API und deren Dokumentation sagt, daß es ab und zu bei SMP vorkommt, daß die Counter der vorhandenen CPUs nicht synchron laufen, obwohl sie es eigentlich sollten. Wenn Du für den Thread keine CPU-Affinität festgelegt hast, kannst Du also ein Problem bekommen.
Oha. Na gut, muß man halt bedenken.
Außerdem bin ich mir nicht zu 100% sicher, daß der Counter bei 0 losläuft.
Der Grund dafür würde mich dann aber interessieren. Immerhin hat keiner der Code-Beispiele, die ich im Netz fand, den Fall betrachtet, daß der Counter überläuft und zurücksetzt. Oder waren die alle unfähig?
Außerdem2: Die Auflösung des Counters ist nicht 1, d.h. Now-Start kann durchaus auch mal 0 sein.
? Quelle? Wieso nicht? Der muß doch nur im Takt hochzählen?
Eric p.s. Ist es eigentlich schlecht fürs Linux-Karma, wenn man solches Detailwissen offenbart?
Wie ist das jetzt gemeint?
Danke für die Hinweise
Gruß Friedrich