warten im c++ programm

Gast #200421
Lesenswert?

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 ?
Gast #200424
Lesenswert?

@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
Gast #200427
Lesenswert?

ü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
Gast #200428
Lesenswert?

@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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren