Funzione PulseEvent (winbase.h)

Imposta l'oggetto evento specificato sullo stato segnalato e quindi lo reimposta nello stato non assegnato dopo aver rilasciato il numero appropriato di thread in attesa.

Nota Questa funzione non è affidabile e non deve essere usata. Esiste principalmente per la compatibilità con le versioni precedenti. Per altre informazioni, vedere la sezione Osservazioni.
 

Sintassi

BOOL PulseEvent(
  [in] HANDLE hEvent
);

Parametri

[in] hEvent

Handle per l'oggetto evento. La funzione CreateEvent o OpenEvent restituisce questo handle.

L'handle deve avere il diritto di accesso EVENT_MODIFY_STATE. Per altre informazioni, vedere Sicurezza oggetti di sincronizzazione e diritti di accesso.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero. Per informazioni dettagliate sull'errore, chiamare GetLastError.

Commenti

Un thread in attesa di 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 momento in cui il thread è stato rimosso dallo stato di attesa, il thread non verrà rilasciato perché PulseEvent rilascia solo i thread in attesa al momento della chiamata. Pertanto, PulseEvent non è affidabile e non deve essere usato da nuove applicazioni. Usare invece le variabili di condizione.

Per un oggetto evento di reimpostazione manuale, vengono rilasciati immediatamente tutti i thread in attesa che possono essere rilasciati immediatamente. La funzione reimposta quindi lo stato dell'oggetto evento su nonsignaled e restituisce.

Per un oggetto evento di reimpostazione automatica, la funzione reimposta lo stato su non firmato e restituisce dopo il rilascio di un singolo thread in attesa, anche se più thread sono in attesa.

Se non sono in attesa thread o se non è possibile rilasciare immediatamente alcun thread, PulseEvent imposta semplicemente lo stato dell'oggetto evento su nonsignaled e restituisce.

Si noti che per un thread che usa le funzioni di attesa a più oggetti per attendere che tutti gli oggetti specificati vengano segnalati, PulseEvent può impostare lo stato dell'oggetto evento su segnalato e reimpostarlo su nonsignaled senza causare la restituzione della funzione di attesa. Ciò accade se non tutti gli oggetti specificati vengono segnalati simultaneamente.

Prestare attenzione estrema quando si usa SignalObjectAndWait e PulseEvent con Windows 7, poiché l'uso di queste API tra più thread può causare il deadlock di un'applicazione. I thread segnalati da SignalObjectAndWait chiama PulseEvent per segnalare l'oggetto in attesa della chiamata SignalObjectAndWait . In alcune circostanze, il chiamante di SignalObjectAndWait non può ricevere lo stato di segnale dell'oggetto in attesa in tempo, causando un deadlock.

Requisiti

Requisito Valore
Client minimo supportato Windows XP [solo app desktop]
Server minimo supportato Windows Server 2003 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione winbase.h (include Windows.h)
Libreria Kernel32.lib
DLL Kernel32.dll

Vedere anche

CreateEvent

Oggetti evento

OpenEvent

ResetEvent

SetEvent

Funzioni di sincronizzazione