<condition_variable>
Określa klasy condition_variable i condition_variable_any służące do tworzenia obiektów, które czekać na warunek, aby stać się prawdą.
Nagłówek ten używa współbieżność Runtime (ConcRT) tak, aby można go było używać razem z innymi mechanizmami ConcRT.Aby uzyskać więcej informacji o ConcRT, zobacz Współbieżność środowiska wykonawczego.
#include <condition_variable>
[!UWAGA]
W kodzie, który jest kompilowany przy użyciu /clr lub /clr:pure, Nagłówek ten jest zablokowany.
Uwagi
Kod, który czeka na zmienną warunek muszą również korzystać z mutex.Zablokować wywołania wątek mutex przed wywołuje funkcje, które oczekiwania dla zmiennej warunek.mutex Następnie jest zablokowany, gdy wywołana funkcja zwraca.mutex Nie jest zablokowana, podczas gdy wątek oczekuje na stanie są prawdziwe.Tak, aby nie są nieprzewidywalne wyniki, każdy wątek, który czeka na zmienną warunku musi korzystać z tego samego mutex obiektu.
Obiekty typu condition_variable_any może być używany z dowolnego typu obiektu mutex.Typ obiektu mutex, który jest używany nie musi zapewnić try_lock metody.Obiekty typu condition_variable należy używać tylko z obiektu mutex typu unique_lock<mutex>.Obiekty tego typu może być szybsza niż obiekty typu condition_variable_any<unique_lock<mutex>>.
Oczekiwanie na zdarzenie, najpierw blokady obiektu mutex, a następnie wywołać jeden z wait metody w zmiennej warunek.wait Połączenia bloki, dopóki nie sygnalizuje inny wątek zmiennej warunek.
Fałszywe wakeups występują, gdy stosowne wątków oczekujących dla zmiennych warunek odblokowany bez powiadomienia.Do rozpoznawania takich fałszywych wakeups, kod, który czeka na warunek, aby stać się prawdą jawnie należy sprawdzić tego warunku, gdy kod zwraca funkcja wait.Zazwyczaj jest to zrobić za pomocą pętli. można użyć wait(unique_lock<mutex>& lock, Predicate pred) Aby wykonać pętlę.
while (condition is false)
wait for condition variable;
condition_variable_any i condition_variable klas każdego ma trzy metody, poczekaj, aż warunek.
waitczeka na okres nieograniczony czas.
wait_untilczeka, aż do określonej time.
wait_forczeka na określonym time interval.
Każda z tych metod ma dwie wersje przeciążone.Tylko jeden czeka i budzić się błędnie.Drugi ma argument dodatkowy szablon, który definiuje predykatu.Metoda zwraca aż predykat jest true.
Każda klasa ma również dwie metody, które są używane do powiadamiania zmiennej warunek, że jego stan jest true.
notify_onebudzi się jednym z wątków, które czekają na zmiennej warunek.
notify_allwraca do stanu aktywności wszystkich wątków oczekujących dla zmiennej warunek.
Zobacz też
Informacje
condition_variable_any — Klasa