Frage

Ist es sicher zu haben 2 oder mehr Threads des Win32-API SetEvent auf den gleichen Event-Handler rufen nicht von einem kritischen Abschnitt geschützt werden?

War es hilfreich?

Lösung

Es ist sicher, aber denken Sie daran, dass, wenn ein Thread es Sets, und ein anderer Thread Stellt es zur gleichen Zeit, Sie gehen nicht zwei Benachrichtigungen zu erhalten, nur ein; da der zweite eine änderte sie sich von Getreu ... Stimmt. Wenn Sie sich Sorgen darüber sind, verwenden Semaphore statt.

Andere Tipps

Angenommen, Sie auf dem gleichen Ereignis mehrere Threads haben gewartet, den gleichen Code ausgeführt wird.

  1. Wenn der Code das Ereignis, bis seine getan Verarbeitung klar tut, Sie effektiv eine CS haben. Da das Ereignis signalisiert bleibt, bis es gelöscht wird (auch bekannt als nicht Autoreset), Signal mehrere Threads, die das tut nichts, außer Spin der CPU.
  2. Wenn Ihr Code es am Anfang der Verarbeitung löscht oder das Ereignis autorset, dann würden Sie die gleiche Funktion mehrere Threads laufen haben, die nicht sicher ist, ob diese Themen etwas zu teilen.

gibt es keine Einschränkungen auf SetEvent von mehreren Threads aufgerufen wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top