Domanda

È sicuro che 2 o più thread chiamino SetEvent dell'API Win32 sullo stesso gestore di eventi non protetto da una sezione critica?

È stato utile?

Soluzione

È sicuro, ma ricorda che se un thread lo imposta e un altro thread lo imposta allo stesso tempo, non riceverai due notifiche, solo una; dal momento che il 2 ° l'ha cambiato da Vero a ... Vero. Se sei preoccupato per questo, usa invece Semaphores.

Altri suggerimenti

Supponendo che tu abbia più thread in attesa dello stesso evento, eseguendo lo stesso codice.

  1. Se il tuo codice non cancella l'evento fino al suo termine, hai effettivamente un CS. Poiché l'evento rimane segnalato fino a quando non viene cancellato (noto anche come non autoreset), la presenza di più thread segnala che non fa altro che girare la CPU.
  2. Se il tuo codice lo cancella all'inizio dell'elaborazione o se l'evento è impostato automaticamente, allora avresti più thread che eseguono la stessa funzione, il che non è sicuro se questi thread condividono qualcosa.

non ci sono restrizioni sulla chiamata a SetEvent da più thread.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top