hallo, ich schreib gerade an einem c++ programm und brauch nun für ne schleife eine funktion mit der ich eine pause von 500-1000ms machen kann so genau muss das nicht sein, ich will nur halt nehalbe bis eine sekunde pause machen, wichtig ist, das dabei nicht der cpu genuzt wird, also cpu einfach dumm beschäftigen mit ihrgend welchen hoch runter zählen bringt mir da jetzt herzlich wenig, hätte einer ideen ?
In C könnte man das so machen: aktuelle Zeit holen mit: time(&jetzt); und dann: while(difftime(time(NULL),jetzt)<1); um beispielsweise 1s zu warten. Thomas
Hi Sleep() bzw. sleep() je nach OS. Ist zwar C aber von C++ auch (wie fast jede C Funktion) zu benutzen. Matthias
@thomas das kommt doch dem runterzählen gleich, dass philip nicht haben will matthias lösung ist da einiges besser, da diese funktion unter aktuellen os den thread einfach solang aus dem scheduler nimmt und die anderen drankommen
@Matthias mach mal bitte nen komplettes beispiel ihrgend wie läuft das net... gibt ne fehle meldung mit der variabel jetzt...
übern buckel ins knie geschosssen... timer starten und auf ein event warten, dass im timer-callback gesetzt wird (unter win) mit WaitForSingleObject... das verursacht 0 last... einziges prob nur win und vor allem aufwendig... sleep verursacht glaub ich last...bin mir aber nicht sicher... und wenn du multithreading machst kanns sein, dass die threads im hintergrund dadurch keine messages bekommen... dann musst du einen schleife fahren in der du immer 10ms machst (weniger kann win in wirklichkeit nicht) und dann ein peekmessage,translatemessage,postmessage machen.. sonnst geht COM nicht in deinen threads im hintergrund... aja... deinen haupt-thread würd ich persönlich nie in einen sleep jagen.. .weil dann kann dieser nicht z.b auf window-resize reagieren (was anderes ist das auf der konsole oder am uc)... 73
@Hans: 1. Sleep verursacht unter Windows ebenfalls überhaupt keine Last und ist auf jeden Fall einfacher zu benutzen als ein Timer. 2. Threads laufen normalerweise unabhängig voneinander, daher kann man beruhigt einen Thread mit Sleep schlafen legen; ob WaitForSingleObject in so einem Fall sinnvoller wäre, steht auf einem anderen Blatt. Dass man die Nachrichtenschleife nicht lahmlegen sollte, sollte IMHO selbstverständlich sein. 3. Ich denke, der OP meint eine Konsolenanwendung, da er von "C++" und nicht von einem bestimmten GUI-System sprach. Wenn ein Poster sein System nicht nennt, ist es in 99.9% aller Fälle Windows (empirisch bewiesen...); bei der Konsole ist Sleep erste Wahl. Bei einer grafischen Windowsanwendung wäre wirklich ein Timer sinnvoller.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.