„Professionelle“ pause()-Funktion
-
Hallo,
trotz langem Suchen in verschiedenen Tutorien bin ich bisher noch nicht auf eine professionelle pause()-Funktion gestoßen. Vom Stil her sind sich alle ähnlich, etwa:int pause(int sekunden) { int startZeit=time(NULL); while(startZeit+sekunden>time(NULL)) ; }; int main { …. pause (10) };Solche pause()-Funktionen führen zu einer 100%igen Prozessorauslastung während der Pausierung. Nicht gerade die feine Art… Kann man dieses Problem nicht eleganter lösen?
-
Hallo
Stichworte sind sleep, timer und/oder thread.
bis bald
akari
-
Unix: sleep(s) oder usleep(us)
Windows: Sleep(ms)
-
Wieviel zahlst du denn?

-
Schön und gut, nur: Wo befinden sich o.g. Befehle (sleep, timer, thread)? Jedenfalls nicht in ctime, genausowenig in time.h. Auch alle (frei zugänglichen) englisch- und deutschsprachigen Tutorien wissen von solchen Funktionen nichts.
Deswegen erneut meine Frage: Wie lässt sich eine elegante pause()-Funktion programmieren?
-
Elegant? Indem Du den Kernel bittest für eine gewisse Zeit diesem Prozess keine Zeit zuzuteilen. Dafür gibt es die Betriebssystemfunktionen die schon genannt wurden.
Unter Linux wirst Du für sleep und usleep sicher Manual-Pages haben, ansonsten hat Google sie für Dich. Und wenn Du Windows programmierst mit der WinAPI, so hast Du sicher auch schonmal von der MSDN gehört, wenn nicht, auch die kennt Google, und dort findest Du auch die Funktion Sleep.
-
-
Ich gehe immer mit dem Gedanken ran Sleep braucht man nicht.
Erst wenn der widerlegt ist benutz ichs.
-
LordJaxom schrieb:
Elegant? Indem Du den Kernel bittest für eine gewisse Zeit diesem Prozess keine Zeit zuzuteilen.
jaja, man kann einen kernel um etwas 'bitten'
dabei muss man aber echt freundlich sein...templäd schrieb:
Ich gehe immer mit dem Gedanken ran Sleep braucht man nicht.
hast ja recht. wenn man die priorität des threads ganz runterschraubt braucht man's wirklich nicht. dann kann man busy-waiten ohne das system zu verlangsamen.
-
@akari: Das Forum ist ja eine richtige Goldgrube! Ich werde in Zukunft lieber dort stöbern als in Tutorials. Damit werde ich wohl 90% weniger dumme Fragen stellen müssen...
-
Alexander Rahm schrieb:
Schön und gut, nur: Wo befinden sich o.g. Befehle (sleep, timer, thread)? Jedenfalls nicht in ctime, genausowenig in time.h.
Die findest du (wenn überhaupt) in den Spezialheadern deines Systems - sleep() (LINUX) in <unistd.h>, Sleep() (WinAPI) in <windows.h>.
(Threads und Timer sind keine "Funktionen", da mußt du also etwas mehr basteln)