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.
Un evento di reimpostazione manuale che tiene conto in modo esplicito del runtime di concorrenza.
Sintassi
class event;
Membri
Costruttori pubblici
| Nome | Descrizione |
|---|---|
| ~event Distruttore | Elimina un evento. |
Metodi pubblici
| Nome | Descrizione |
|---|---|
| reset | Reimposta l'evento su uno stato non segnalato. |
| set | Segnala l'evento. |
| aspettare | Attende che l'evento venga segnalato. |
| wait_for_multiple | Attende la segnalazione di più eventi. |
Costanti pubbliche
| Nome | Descrizione |
|---|---|
| timeout_infinite | Valore indicante un'attesa che non deve terminare mai. |
Osservazioni:
Per altre informazioni, vedere Strutture dei dati di sincronizzazione.
Gerarchia di ereditarietà
event
Requisiti
Intestazione: concrt.h
Spazio dei nomi: Concurrency
evento
Costruisce un nuovo evento.
_CRTIMP event();
~evento
Elimina un evento.
~event();
Osservazioni:
Si prevede che non ci siano thread in attesa dell'evento quando il distruttore entra in esecuzione. Se si consente all'evento di eseguire la distruzione quando i thread sono ancora in attesa si verificherà un comportamento non definito.
reset (ripristino)
Reimposta l'evento su uno stato non segnalato.
void reset();
set
Segnala l'evento.
void set();
Osservazioni:
Segnalare l'evento può far sì che un numero arbitrario di contesti in attesa dell'evento diventino operativi.
timeout_infinite
Valore indicante un'attesa che non deve terminare mai.
static const unsigned int timeout_infinite = COOPERATIVE_TIMEOUT_INFINITE;
attendere
Attende che l'evento venga segnalato.
size_t wait(unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parametri
_Timeout
Indica il numero di millisecondi prima che l'attesa raggiunga il timeout. Il valore COOPERATIVE_TIMEOUT_INFINITE indica che non è previsto alcun timeout.
Valore restituito
Se l'attesa è stata soddisfatta, viene restituito il valore 0 ; in caso contrario, il valore COOPERATIVE_WAIT_TIMEOUT per indicare che il timeout di attesa è scaduto senza che l'evento venga segnalato.
Importante
In un'applicazione della piattaforma UWP (Universal Windows Platform), non chiamare wait sul thread ASTA perché questa chiamata può bloccare il thread corrente e causare che l'app diventi non rispondente.
attendi_per_multipli
Attende la segnalazione di più eventi.
static size_t __cdecl wait_for_multiple(
_In_reads_(count) event** _PPEvents,
size_t count,
bool _FWaitAll,
unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);
Parametri
_PPEvents
Matrice di eventi da attendere. Il numero di eventi all'interno della matrice è indicato dal count parametro .
count
Numero di eventi all'interno della matrice fornita nel _PPEvents parametro .
_FWaitAll
Se impostato sul valore true, il parametro specifica che tutti gli eventi all'interno della matrice fornita nel _PPEvents parametro devono essere segnalate per soddisfare l'attesa. Se impostato sul valore false, specifica che qualsiasi evento all'interno della matrice fornita nel _PPEvents parametro che viene segnalato soddisfa l'attesa.
_Timeout
Indica il numero di millisecondi che passano prima che l'attesa vada in timeout. Il valore COOPERATIVE_TIMEOUT_INFINITE indica che non è previsto alcun timeout.
Valore restituito
Se l'attesa è stata soddisfatta, viene restituito l'indice all'interno della matrice fornita nel parametro _PPEvents che ha soddisfatto la condizione di attesa; altrimenti, viene restituito il valore COOPERATIVE_WAIT_TIMEOUT per indicare che il timeout di attesa è scaduto senza che la condizione fosse soddisfatta.
Osservazioni:
Se il parametro _FWaitAll è impostato sul valore true per indicare che tutti gli eventi devono essere indicati per soddisfare l'attesa, l'indice restituito dalla funzione non ha un significato speciale diverso dal fatto che non sia il valore COOPERATIVE_WAIT_TIMEOUT.
Importante
In un'app per la Universal Windows Platform (UWP), non chiamare wait_for_multiple nel thread ASTA perché questa chiamata può bloccare il thread corrente e può causare la non risposta dell'app.