Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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ć.