Verzögerung in C
Hi Leute ,
in meinem neuen projekt sollen einige Infos exakt 10 sekunden lang eingeblendet werden. Doowerweise bin ich noch anfänger und kenne deshalb den befehl noch nicht. Momentan hab ich eine lange verschachtelte schleife , die auf jedem rechner natürlich unterschiedlich lange dauert. Ich benötige sllerdings etwas präziseres, irgentein befehl wo ich mir sicher sein kann das es auf jedem rechner gleichlang dauert. Kennt einer ein solchen befehl (sleep gibt es mein ich nicht und die anderen beispiele aus dem Internet haben mich eher verwirrt) Schreibt mir am besten ein bespiel/funktion wie auch immer so das ich es einfügen kann und vllt. eine kleine erklärung damit ich es dann auch verstehe.
.
thx im vorraus
3 Antworten
Sleep(x); x steht für die Zeit in millisekunden (?). Funktioniert nur unter Windows.
OHHH , ich hab das auch erst versucht , dachte aber es ist wie bei Quick Basic das die Zeit in sekunden ist und hab mich immer gewundert das es nicht funktioniert weil es gleich weiter geht.
thx
sleep() gibt es sehr wohl, allerdings ist das ggf. zu ungenau (nur Sekundenintervalle sind möglich). usleep() ist genauer. Beides in unistd.h definiert.
Bei beidem handelt es sich um eine Mindest-Wartezeit (kann etwas länger werden). Außerdem kann die Wartezeit durch einen Interrupt vorzeitig beendet werden, man muss also gucken, ob lange genug gewartet wurde. Üblicherweise wird zum Messen der Zeit z.B. gettimeofday() verwendet.
Wenn es auf ganz präzises Timing ankommt verwendet man POSIX-Echtzeittimer.
In deinem Fall wie gesagt einfach sleep(10) verwenden, und ggf. nochmal "nachlegen", falls das Programm durch einen Interrupt vorzeitig "geweckt" wurde.
öhm , das verwirrt mich jetzt ein wenig , durch die Antwort oben habe ich dann sleep(10000); geschrieben und er wartet exakt 10 sekunden. Und ich musste auch nicht unistd.h includiren...