SetEvent() / WaitForSingleObjectEx()



  • Ich habe hier eine Applikation mit mehrere Threads, die sich über ein Eventhandle synchronisieren.

    An der einen Stelle wird mit WaitForSingleObjectEx() auf einen Event gewartet, der an anderer Stelle mit SetEvent() geschickt wird. Jetzt habe ich festgestellt, dass SetEvent() mit unter mal sehr oft aufgerufen wird, wenn der andere Thread gerade nicht bei WaitForSingleObjectEx() steht.

    Meine Frage deswegen: kann das ein Problem sein? Sprich verursacht SetEvent() einen Eintrag in einer internen Queue die in meinem Fall dann sehr schnell volläuft oder ist dieses Verfahren unkritisch?



  • Kann es sein das du statt Events besser Semaphoren verwenten solltest ?

    CreateSemaphore
    ReleaseSemaphore
    WaitForSingleObject


  • Mod

    Wenn kein Auto-Event verwendet wird spielt es doch gar keine Rolle, ob man im WaitForSinglerObject steht oder nicht.

    Was willst Du denn mit diesem Event steuern?



  • Wie schon geschrieben snychronisiert dieser Mechanismus zwei Threads miteinander. Ob das nun die perfekte Lösung ist oder nicht sei momentan mal dahin gestellt, grundsätzlich ändern kann ich in dem Fall nichts (never touch a running system).

    Meine Frage bleibt deswegen: wie arbeitet dieses SendEvent(), landen die Events in einer Queue bei der es kritisch ist wenn sie zu voll wird oder stehen die als ein einzelnes Signal an?


  • Mod

    Es gibtkeine Queue für Events. Jedes System Objekt hat seinenen eigenen Singaled/Nonsignaled Zustand.

    Wnen es nur einen Thread gibt der auf den Event wartenmuss, dann ist solch ein Event genau das richtige. Dann kannst Du auch einen Auto-Reset Event nutzen.


Anmelden zum Antworten