Mit welcher funktion kann ich eine Zeitverzögerung bewirken?
-
Mit welcher funktion kann ich eine Zeitverzögerung bewirken? Über die Forensuche habe ich sleep() gefunden, aber die funktioniert nicht und steht auch nicht in der Referenz
-
wieso funktioniert die nicht?
[...] // programm
sleep( 5000 ); // wartet 5sekunden
[...] // programm continueGruß Tobi.
-
Hmm weil Sleep eine Windows-Implementierung ist(d.h. im Header windows.h liegt). usleep ist es unter UNIX-Systemen.
-
Falls du während der Wartezeit deine Anwendung nicht blocken willst:
int main() { unsigned long time; unsigned long elapsed = 0; while(true) { time = timeGetTime(); // 500ms = 1000ms, anscheinend wird die andere Hälfte für die Schleife und den Timer selbst benötigt if(elapsed > 500) { cout << "Aha" << endl; elapsed = 0; } elapsed += timeGetTime() - time; } }Vergiss die nötigen header und die winmm.lib aber nicht!
MfG
-
Das ist doch lachhaft. Das ist Windows-Abhängig ... kannst de auch gleich Sleep nutzten!
#include <ctime> void sleep(const std::size_t& time) { std::time_t time_w = std::time(NULL) + time; while (time_w > std::time(NULL)); }... ob es geht hab ich nicht getestet ... bei mir scheint time_t leicht merkwürdig definiert zu sein ... naja ...
-
Blockt doch auch...
-
Wie könnte man das eigentlich exakter machen, ohne dass es blockiert?
Aber ohne HighPerformanceCounter.MfG
-
Die Versionen in denen Schleifen zum Warten benutzt werden, sind meiner Meinung nach eher schlecht, da die CPU dabei an den Poller fährt. Besser ist es eigentlich doch, eine vom Betriebssystem zur Verfügung gestellte Funktion zum passiven Warten (windows: Sleep, glibc sleep) zu benutzen. Das ist zwar leider nicht portabel, aber wenn man sich einen Wrapper drum packt, bleibt der Änderungsaufwand in vertretbaren Grenzen.
-
Dann muss man aber nen extra thread erstellen, damit man noch Anderes tun kann...
MfG
-
ceplusplus@loggedoff schrieb:
Dann muss man aber nen extra thread erstellen, damit man noch Anderes tun kann...
MfG
Dafuer verbraet man nicht unnoetig CPU
-
Setzt man halt noch ein Sleep(1) unten dran.
MfG
-
Was heisst denn "noch was anderes tun"? Wenn Du eine Single-Threaded-Anwendung pausierst, ist sie nunmal pausiert. Was soll denn noch alles passieren, in der Pause? Soll die Anwendung ein Butterbrot essen?
-
Tachyon schrieb:
Was heisst denn "noch was anderes tun"? Wenn Du eine Single-Threaded-Anwendung pausierst, ist sie nunmal pausiert. Was soll denn noch alles passieren, in der Pause? Soll die Anwendung ein Butterbrot essen?
andere threads von z.b. vom system selber oder von anderen programmen dürfen dann auch ein paar CPU zyklen essen

-
andere threads von z.b. vom system selber oder von anderen programmen dürfen dann auch ein paar CPU zyklen essen

Sie Seite eins. Da habe ich genau das schon gesagt. Es geht ihm aber anscheinend nicht um andere Anwendungen.