Auf Methode Sleep() anwenden, aus einer anderen Methode/Thread
-
Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x und C++11) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Unter WinAPI wäre das wohl CreateEvent, SetEvent, ResetEvent und WaitForSingleObject.
http://msdn.microsoft.com/en-us/library/windows/desktop/ms682655(v=vs.85).aspx
-
Und mit anderen Threading-APIs (z.B. PTHREADS, Boost.Thread, std::thread) nimmt man Condition-Variablen.
-
Okay, habe mir das alles angeguckt, aber leider geht nicht das was ich eigentlich möchte...
Ich möchte auf die Funktion warten, und sobald sie am Ende angekommen ist, möchte ich etwas tun.
In meinem Fall ist es die Paket Funktion recv.
Ich würde also gerne warten, bis sie am Ende angekommen ist und dann einen Code ausführen.
Ich dachte vielleicht daran sie einfach neu zu definieren, sodass ich in ihr ein paar Umstellungen vornehmen kann, aber irgendwie kann man sie nicht selbst schreiben (?)
-
Sleep ist sehr restriktiv. Ein Prozess oder Thread wird 'schlafen gelegt' zugunsten anderer Dinge, die unbeirrt weiter laufen - mehr nicht. Was du suchst, geht mit Sleep wohl nicht!
-
recv - auf einem blocking Socket(wie es der Name schon sagst) wartet so lange, bis es die angegebene Anzahl der Daten abgerufen hat. Stehen keine Daten im Puffer, blockiert recv(...) so lange, bis es die Daten erhält.
-
zuckerlie schrieb:
recv - auf einem blocking Socket(wie es der Name schon sagst) wartet so lange, bis es die angegebene Anzahl der Daten abgerufen hat.
Das ist falsch.
-
oder wartet so lange, bis Daten abrufbar sind?!
-
Ja, bis Daten gelesen werden können. Anzahl der gelesenen Bytes kann zwischen 1 und angeforderter Menge aber variieren.
-
ah okay, verstehe das mit dem blocking socket... aber bei mir ist der recv nicht von mir selbst, sondern gedetoured... ich will warten, bis jedes paket da raus is und dann code ausführen...