Udostępnij za pośrednictwem


Zdarzenie – Klasa

Zdarzenie resetowania ręcznego, które jawnie uwzględnia Concurrency Runtime.

Składnia

class event;

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
~destruktor zdarzeń Niszczy zdarzenie.

Metody publiczne

Nazwa/nazwisko opis
resetować Resetuje zdarzenie do stanu niesygnalizowanego.
set Sygnalizuje zdarzenie.
czekać Czeka, aż zdarzenie zostanie zasygnalizowane.
czekaj_na_wiele Oczekuje, aż wiele zdarzeń zostanie zasygnalizowanych.

Stałe publiczne

Nazwa/nazwisko opis
timeout_infinite Wartość wskazująca, że czas oczekiwania nigdy nie powinien się zakończyć.

Uwagi

Aby uzyskać więcej informacji, zobacz Synchronizacja struktur danych.

Hierarchia dziedziczenia

event

Wymagania

Nagłówek: concrt.h

Przestrzeń nazw: współbieżność

wydarzenie

Tworzy nowe zdarzenie.

_CRTIMP event();

~zdarzenie

Niszczy zdarzenie.

~event();

Uwagi

Oczekuje się, że nie ma wątków oczekujących na zdarzenie po uruchomieniu destruktora. Zezwolenie na destrukcję zdarzenia, gdy wątki nadal na nie czekają, powoduje niezdefiniowane zachowanie.

resetować

Resetuje zdarzenie do stanu niesygnalizowanego.

void reset();

zestaw

Sygnalizuje zdarzenie.

void set();

Uwagi

Sygnał zdarzenia może spowodować, że dowolna liczba kontekstów oczekujących na to zdarzenie stanie się aktywna.

timeout_nieograniczony

Wartość wskazująca, że limit czasu oczekiwania nigdy nie powinien być przekroczony.

static const unsigned int timeout_infinite = COOPERATIVE_TIMEOUT_INFINITE;

czekać

Czeka, aż zdarzenie zostanie zasygnalizowane.

size_t wait(unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

Parametry

_Limit czasu
Wskazuje liczbę milisekund przed upływem limitu czasu oczekiwania. Wartość COOPERATIVE_TIMEOUT_INFINITE oznacza, że nie ma limitu czasu.

Wartość zwracana

Jeśli oczekiwanie zostało spełnione, zwracana jest wartość 0 . W przeciwnym razie wartość COOPERATIVE_WAIT_TIMEOUT wskazująca, że upłynął limit czasu oczekiwania bez zasygnalizowanego zdarzenia.

Ważne

W aplikacji platformy uniwersalnej systemu Windows (UWP) nie należy wywoływać wait w wątku ASTA, ponieważ to wywołanie może zablokować bieżący wątek i spowodować, że aplikacja przestanie odpowiadać.

oczekiwanie_na_wiele

Oczekuje, aż wiele zdarzeń zostanie zasygnalizowanych.

static size_t __cdecl wait_for_multiple(
    _In_reads_(count) event** _PPEvents,
    size_t count,
    bool _FWaitAll,
    unsigned int _Timeout = COOPERATIVE_TIMEOUT_INFINITE);

Parametry

_PPEvents
Tablica zdarzeń, na które należy czekać. Liczba zdarzeń w tablicy jest wskazywana przez count parametr .

count
Liczba zdarzeń w tablicy podanej w parametrze _PPEvents .

_FWaitAll
Jeśli ustawiono wartość true, parametr określa, że wszystkie zdarzenia w tablicy podanej w parametrze _PPEvents muszą zostać zasygnalizowane, aby spełnić warunek oczekiwania. Jeśli ustawiono wartość false, określa, że każde zdarzenie w tablicy podanej jako parametr _PPEvents, które staje się sygnalizowane, zaspokoi oczekiwanie.

_Limit czasu
Wskazuje liczbę milisekund przed upływem limitu czasu oczekiwania. Wartość COOPERATIVE_TIMEOUT_INFINITE oznacza, że nie ma limitu czasu.

Wartość zwracana

Jeśli oczekiwanie zostało spełnione, indeks w tablicy podanej w parametrze _PPEvents , który spełnia warunek oczekiwania; w przeciwnym razie wartość COOPERATIVE_WAIT_TIMEOUT wskazująca, że upłynął limit czasu oczekiwania bez spełnienia warunku.

Uwagi

Jeśli parametr _FWaitAll jest ustawiony na wartość true wskazującą, że wszystkie zdarzenia muszą zostać zasygnalizowane, aby spełnić oczekiwania, indeks zwracany przez funkcję nie ma specjalnego znaczenia innego niż fakt, że nie jest to wartość COOPERATIVE_WAIT_TIMEOUT.

Ważne

W aplikacji platformy uniwersalnej systemu Windows (UWP) nie należy wywoływać wait_for_multiple w wątku ASTA, ponieważ to wywołanie może zablokować bieżący wątek i może spowodować, że aplikacja przestanie odpowiadać.

Zobacz też

Przestrzeń nazw współbieżności