Brauche absolut exakten Timer
-
Jochen Kalmbach schrieb:
Die einzige Referenz die bei der WinAPI verwendet werden sollte ist die MSDN...
Falls Du also von QueryPerformanceCounter reden solltest, dann ist die Frequenz abhängig von der HAL und nicht fest vorgegen! (sonst würde es ja auch keine QueryPerformanceFrequency geben, oder)?
Auf den meisten heutigen CPU's liegt die Frequenz aber bei 3.19Ghz und die Funktion gibt es, da sie auch anders sein kann, wie du sagst.
Das hab ich irgendwo gelesen.
Ich kann nur aus Erfahrung sprechen, dass ich gute Erfahrungen mit dem Counter gemacht habe beim Rendern, wenn ein Schleifendurchgang nur 5ms oder weniger dauert. Zum hochrechnen wie schon gesagt.
-
naja das Problem ist ja wohl eher nicht dass ich keine Möglichkeit hätte z.b. über QueryPerformanceCounter einen höchstgenauen Zeitabstand zu messen. Das Problem ist, dass ich in der Überprüfung plötzlich immer wieder 16ms abstand habe. Die genauste Timer-Funktion nützt mir nichts, wenn ich sie nur alle 16ms überprüfen kann

-
Ja wann bestimmst du denn die Zeit?
wenn du es einmal in einem Schleifendurchlauf machst, braucht die Schleife vielleicht 16ms ? Könnte ja sein, dass der Prozess deines Programmes nicht oft genug an der Reihe ist und darum dauerts halt ab und zu mal en bisschen länger
-
nein, meine schleife braucht ca. 99 von 100 mal nur ca. 3 oder 4 1/10000 sekunden.
Die Frage ist nur, wie ich den Thread der das zeitinterval misst dazu gebracht werden kann, nicht unterbrochen zu werden. Mit SetThreadPriority hats nämlich nicht geklappt!
-
chris90 schrieb:
nein, meine schleife braucht ca. 99 von 100 mal nur ca. 3 oder 4 1/10000 sekunden.
Die Frage ist nur, wie ich den Thread der das zeitinterval misst dazu gebracht werden kann, nicht unterbrochen zu werden. Mit SetThreadPriority hats nämlich nicht geklappt!nocht nichmal als Echtzeitthread ?
-
nein, noch nicht einmal als Echtzeitthread bzw falls das Priority Nr. 6 ist...
Es macht bei mir aber auch keinen großen Unterschied ob ich nun -15 oder 6 hatte als Priority...
-
hey, ich glaub ich weiß was ich grade für einen Fehler gemacht hab.
Mein Timer zeigt Millisekunden and und nicht Sekunden! Deswegen habe ich bei Ergebnisse wie "0.012" rot gesehen!
aalso: Mit Echtzeitthread klappt es wunderbar! Auflösung: < 0.5 msWieso wird das nicht immer so gemacht wo es doch eine höhere Auflösung hat?
DANKE!!
chris90
-
chris90 schrieb:
hey, ich glaub ich weiß was ich grade für einen Fehler gemacht hab.
Mein Timer zeigt Millisekunden and und nicht Sekunden! Deswegen habe ich bei Ergebnisse wie "0.012" rot gesehen!
aalso: Mit Echtzeitthread klappt es wunderbar! Auflösung: < 0.5 msWieso wird das nicht immer so gemacht wo es doch eine höhere Auflösung hat?
DANKE!!
chris90Je höher die Threadpriorität, desto öfter kommt der Prozess an die Reihe beim Weiterrechnen.
Echtzeit ist halt verdammt oft, wenn nicht sogar *nur*, bin mir grad nicht sicher.
-
xindon schrieb:
Je höher die Threadpriorität, desto öfter kommt der Prozess an die Reihe beim Weiterrechnen.
????
xindon schrieb:
Echtzeit ist halt verdammt oft, wenn nicht sogar *nur*, bin mir grad nicht sicher.
Echtzeit hat nichts mit oft zu tun, sondern mit Deterministrik. Und die ist in Windows nicht gegeben.
-
Jochen Kalmbach schrieb:
xindon schrieb:
Je höher die Threadpriorität, desto öfter kommt der Prozess an die Reihe beim Weiterrechnen.
????
xindon schrieb:
Echtzeit ist halt verdammt oft, wenn nicht sogar *nur*, bin mir grad nicht sicher.
Echtzeit hat nichts mit oft zu tun, sondern mit Deterministrik. Und die ist in Windows nicht gegeben.
Zwei Threads A und B, beide Mittlere Priorität.
-> A, B, A, B, A, B... usw.Zwei Threads A und B, A hohe Priorität
-> A, A, B, A, A, B, A, A, B .... usw.
-
xindon schrieb:
Zwei Threads A und B, A hohe Priorität
-> A, A, B, A, A, B, A, A, B .... usw.Nein. Wenn A immer "Ready to run" ist, kommt B nie dran!
Lese doch bitte mal "Windows Internal"...
http://www.amazon.de/exec/obidos/ASIN/0735619174/028-1369064-1089362Add: Aus diesem Grunde kann ich auch jedem nur davon abraten ohne fundiertes Wissen an den Prioritäten zu schrauben! Gleich gar nicht irgendwas auf Echtzeit zu setzen...
-
*g* Ich kauf mir bestimmt kein Buch für 50€ wegen einer Sache, mit der ich mich normalerweise gar nicht beschäftige

Ich weiß ja selbst, dass ich keine Ahnung habe; aber ich habe gedacht, dass ich einfach mal das poste, was ich gelesen/gehört hab. Man lernt schließlich nie aus.
Jochen Kalmbach schrieb:
Add: Aus diesem Grunde kann ich auch jedem nur davon abraten ohne fundiertes Wissen an den Prioritäten zu schrauben! Gleich gar nicht irgendwas auf Echtzeit zu setzen...
Mach ich auch nicht

edit:
Der Imperativ von lesen ist lies!
-
xindon schrieb:
Der Imperativ von lesen ist lies!

OT: Ich bin Schwabe, da kann mir das Imperativ gestohlen bleiben
