event — Klasa
Zdarzenie resetowania ręcznego, które jawnie uwzględnia środowisko uruchomieniowe współbieżności.
Składnia
class event;
Elementy członkowskie
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. |
wait_for_multiple | Czeka na sygnał wielu zdarzeń. |
Stałe publiczne
Nazwa/nazwisko | opis |
---|---|
timeout_infinite | Wartość wskazująca, że limit czasu oczekiwania nigdy nie powinien być przekroczony. |
Uwagi
Aby uzyskać więcej informacji, zobacz Synchronizacja struktur danych.
Hierarchia dziedziczenia
event
Wymagania
Nagłówek: concrt.h
Przestrzeń nazw: współbieżność
event
Tworzy nowe zdarzenie.
_CRTIMP event();
Uwagi
~zdarzenie
Niszczy zdarzenie.
~event();
Uwagi
Oczekuje się, że nie ma wątków oczekujących na zdarzenie po uruchomieniu destruktora. Zezwolenie na destrukcję zdarzenia z wątkami nadal czeka na niezdefiniowane zachowanie.
Resetowanie
Resetuje zdarzenie do stanu niesygnalizowanego.
void reset();
set
Sygnalizuje zdarzenie.
void set();
Uwagi
Sygnał zdarzenia może spowodować dowolną liczbę kontekstów oczekujących na uruchomienie zdarzenia.
timeout_infinite
Wartość wskazująca, że limit czasu oczekiwania nigdy nie powinien być przekroczony.
static const unsigned int timeout_infinite = COOPERATIVE_TIMEOUT_INFINITE;
wait
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 platforma uniwersalna systemu Windows (UWP) nie należy wywoływać wait
wątku usługi ASTA, ponieważ to wywołanie może zablokować bieżący wątek i może spowodować, że aplikacja przestanie odpowiadać.
wait_for_multiple
Czeka na sygnał wielu zdarzeń.
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ń do oczekiwania. 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ć oczekiwania. Jeśli ustawiono wartość false
, określa, że każde zdarzenie w tablicy dostarczonej w _PPEvents
parametrze, który staje się sygnalizowany, będzie spełniać oczekiwania.
_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 platforma uniwersalna systemu Windows (UWP) nie należy wywoływać wait_for_multiple
wątku usługi ASTA, ponieważ to wywołanie może zablokować bieżący wątek i może spowodować, że aplikacja przestanie odpowiadać.