Sdílet prostřednictvím


<condition_variable>

Definuje třídy condition_variable a condition_variable_any , lze vytvářet objekty, které čekat na podmínku, která budou pravdivé.

Toto záhlaví používá Concurrency Runtime (ConcRT), takže jej můžete použít společně s jinými mechanismy ConcRT.Další informace o ConcRT naleznete v tématu Souběžnost Runtime.

#include <condition_variable>

[!POZNÁMKA]

V kódu, který je zkompilován s použitím /clr nebo /clr:pure, toto záhlaví je blokován.

Hh874761.collapse_all(cs-cz,VS.110).gifPoznámky

Kód, který čeká podmínka proměnné musí také použít mutex.Volající vlákno musí uzamknout mutex před zavoláním funkce, které čekat proměnné stavu.mutex Je pak uzamčen, když volaná funkce vrátí.mutex Není uzamčena, zatímco podproces čeká podmínku, která budou pravdivé.Tak, aby nebyly nalezeny žádné neočekávané výsledky, musí každé vlákno, které čeká proměnné stavu používají stejný mutex objektu.

Objekty typu condition_variable_any lze použít s mutex libovolného typu.Není nutné poskytnout typ objektu mutex, který se používá try_lock metoda.Objekty typu condition_variable lze použít pouze s mutex typu unique_lock<mutex>.Objekty tohoto typu může být rychlejší než objekty typu condition_variable_any<unique_lock<mutex>>.

Čekání na událost, nejprve uzamknutí mutex a volejte jednu z wait metody, proměnné stavu.wait Bloky volat, dokud jiný podproces signalizuje stav proměnné.

Nesprávné wakeups dojít vlákna, které čekají pro proměnné stavu budou odblokovány bez potřeby oznámení.Rozpoznat tyto nesprávné wakeups by kód, který čeká na podmínku, která budou pravdivé explicitně kontrolovat tuto podmínku, pokud kód vrátí funkci čekání.To se obvykle provádí pomocí smyčky; můžete použít wait(unique_lock<mutex>& lock, Predicate pred) k provedení této smyčky.

while (condition is false)
    wait for condition variable;

condition_variable_any a condition_variable třídy každý mají tři metody, které lze čekat na podmínku.

  • waitČeká se na neomezené časové období.

  • wait_untilčeká až do zadaného time.

  • wait_forčeká zadaném time interval.

Každá z těchto metod má dvě přetížené verze.Jednu právě čeká a lze probudit spuriously.Druhá má další šablonu argumentu, který definuje predikátu.Metoda nevrátí, dokud je predikátem true.

Každá třída má také dvě metody, které se používá k upozorní podmínka proměnnou, která je jeho stav true.

  • notify_oneprobouzení některé z vláken, které čeká na proměnné stavu.

  • notify_allprobouzení všech vláken, které čekají na podmínku proměnné.

Viz také

Referenční dokumentace

Třída condition_variable

Třída condition_variable_any

Výčet cv_status

Další zdroje

Soubory hlaviček