thread warten lassen
-
hallo
ich hab mal eine frage:
ich muss einen thread warten lassen und mir sind zwei lösungen eingefallen
und jetzt würde ich gerne wissen ob etwas gegen die erste Lösung spricht
oder ob sie mehr rechenleistung braucht oder ob durch Sleep(1) die reaktion auf bWarten verzögert wird.
Danke schon mal im vorraus AuruxLösung1:
while(bWarten) //wobei bWarten nur durch einen anderen thread gesetzt werden kann
Sleep(1);Lösung2:
WaitForSingleObject(hEvent,INFINITE);
-
1. Die Frage gehört ins WinAPI-Forum. WaitForSingleObject ist kein Standard-C++.
2. WaitForSingleObjekt ist natürlich viel besser als eine manuelle Schleife, vor allem wenn in der Schleife ein Sleep ist. Es gibt nur einen einzigen Grund warum manchmal (ganz selten) eine Schleife besser sein kann: Wenn die Wartezeit extrem kurz ist. WaitForSingleObject wechselt nämlich in den Kernelmode, was u.U. lange dauert. Da Sleep das aber auch tut, ist deine Schleife sinnlos. Wenn du schon eine Schleife benutzt, dann bitte mit der Funktion InterlockedCompareExchange. Die ist threadsicher ohne den Usermode zu verlassen.
Aber eigentlich ist WaitForSingleObject immer die bessere Lösung.