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 Aurux

    Lö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. 🙂


Anmelden zum Antworten