Frage zu einer Delay Funktion
-
Nimm dir einen Zettel und einen Bleistift.
Wenn du erstmal ein paar Minuten versucht hast es zu verstehen, dann verstehst du es auch. Aber probieren musst du schon selber
-
Ich glaub jetzt hab ichs verstanden ich hab das jetzt mal versucht so zu verstehen
#include <iostream> using namespace std; int main(int argc, char* argv[]) { int D = 2000; for (int i = 0; i < D; i += 50) { cout<<"I : "<<i<<"\n"; Sleep(50); } return 0; }
Der Zählt ja jetzt die Schleife immer in 50 er Schritten Hoch also 50,100,150...
Bis der bei 2000 ist und zwischen dem Hochzählen ist immer eine Verzögerung von 50 Millisekunden.
Also immer 50 (50milisec verzögerung) 100 (50milisec verzögerung) 150....
Und das alles dauert bei mir 3 Sekunden.
-
Du hast halt min. 2 Sekunden Sleep (wie gewollt) und max. 1 Sekunde "Overhead". Sei es die Schleife an sich oder vorher das ProcessMessages.
Mit so einem statischen Ansatz ohne die tatsächliche Zeit zu berücksichtigen, bekommst du eh kein genaues Ergebnis. Wobei du das eh gar nicht bekommen kannst, da es kein Echtzeitbetriebssystem ist. Gehe ich zumindest mal stark von aus.
-
Die Zeitauflösung liegt bei Windows bei 15-16 ms, jedes Sleep(50) dauert daher 62-63 ms.
-
Nanyuki schrieb:
Die Zeitauflösung liegt bei Windows bei 15-16 ms, jedes Sleep(50) dauert daher 62-63 ms.
Bist du dir sicher? Das wäre ja extrem ungenau...
-
Nexus schrieb:
Nanyuki schrieb:
Die Zeitauflösung liegt bei Windows bei 15-16 ms, jedes Sleep(50) dauert daher 62-63 ms.
Bist du dir sicher? Das wäre ja extrem ungenau...
Die Auflösung kann ich bestätigen. Sie kann mit einer API Funktion (deren Namen mir nicht einfällt) abgefragt werden.
Simon
-
Ist ja auch nur ein 08/15 Betriebssystem für Anwender und nicht für Wissenschaftler etc.
-
Eine Frage noch ^^
Was meinst du mit dem Overhead Fellhuhn ?
-
Zeit die nicht für die eigentliche Aufgabe (das Warten) draufgeht.
-
also ich hab auch schon sowas wie minimal 10msec gehört. Drunter keinesfalls.
-