Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz 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 ś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ść
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 z wątkami nadal czeka na niezdefiniowane zachowanie.
resetować
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ć.