Oggetti evento (sincronizzazione)
Un oggetto evento è un oggetto di sincronizzazione il cui stato può essere impostato in modo esplicito su segnalato tramite la funzioneSetEvent. Di seguito sono riportati i due tipi di oggetto evento.
Oggetto | Descrizione |
---|---|
Evento di reimpostazione manuale | Oggetto evento il cui stato rimane segnalato fino a quando non viene reimpostato in modo esplicito su non firmato dalla funzione ResetEvent. Anche se viene segnalato, è possibile rilasciare qualsiasi numero di thread in attesa o thread che specificano successivamente lo stesso oggetto evento in una delle funzioni di attesa . |
Evento di reimpostazione automatica | Oggetto evento il cui stato rimane segnalato fino al rilascio di un singolo thread in attesa, in cui il sistema imposta automaticamente lo stato su non firmato. Se non sono in attesa thread, lo stato dell'oggetto evento rimane segnalato. Se più thread sono in attesa, viene selezionato un thread in attesa. Non presupporre un ordine FIFO (First-In First-In, First-Out). Gli eventi esterni, ad esempio le API in modalità kernel, possono modificare l'ordine di attesa. |
L'oggetto evento è utile per inviare un segnale a un thread che indica che si è verificato un determinato evento. Ad esempio, in input e output sovrapposti, il sistema imposta un oggetto evento specificato sullo stato segnalato al termine dell'operazione sovrapposta. Un singolo thread può specificare oggetti evento diversi in diverse operazioni sovrapposte simultanee, quindi usare una delle funzioni di attesa a più oggetti attendere lo stato di uno degli oggetti evento da segnalare.
Un thread usa la funzione CreateEvent o CreateEventEx per creare un oggetto evento. Il thread di creazione specifica lo stato iniziale dell'oggetto e se si tratta di un oggetto evento di reimpostazione manuale o reimpostazione automatica. Il thread di creazione può anche specificare un nome per l'oggetto evento. I thread in altri processi possono aprire un handle a un oggetto evento esistente specificandone il nome in una chiamata alla funzioneOpenEvent. Per altre informazioni sui nomi per oggetti mutex, eventi, semafori e timer, vedere Sincronizzazione interprocesso.
Argomenti correlati