Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
avviso C28648: PulseEvent è una funzione inaffidabile
Un thread in attesa su un oggetto di sincronizzazione può essere rimosso momentaneamente dallo stato di attesa da un APC in modalità kernel e quindi restituito allo stato di attesa dopo il completamento dell'APC. Se la chiamata a PulseEvent si verifica durante il periodo in cui il thread è stato rimosso dallo stato di attesa, il thread non verrà rilasciato e "si blocca" per sempre. Questo perché PulseEvent rilascia solo i thread in attesa al momento della chiamata.
Alcuni dei modi per correggere l'uso di PulseEvent:
Se è necessario rilasciare solo uno dei thread in attesa dell'evento e l'evento è un evento di reimpostazione manuale, modificarlo in un evento di reimpostazione automatica e chiamare SetEvent anziché PulseEvent.
Se è necessario rilasciare solo uno dei thread in attesa dell'evento e l'evento è un evento di reimpostazione automatica, chiamare SetEvent anziché PulseEvent.
Se tutti i thread in attesa dell'evento devono essere rilasciati e l'evento è un evento di reimpostazione manuale, riprogettare il codice per usare un tipo diverso di oggetto di sincronizzazione, ad esempio un semaforo.
Se tutti i thread in attesa dell'evento devono essere rilasciati e l'evento è un evento di reimpostazione automatica, chiamare SetEvent invece di PulseEvent (la chiamata originale a PulseEvent ha comunque rilasciato un solo thread).