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.
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 |