Sdílet prostřednictvím


<mutex>

Zahrňte standardní hlavičku <mutex> pro definování tříd mutex, recursive_mutex, timed_mutexa recursive_timed_mutex; šablon lock_guard a unique_lock; a podpůrných typů a funkcí, které definují oblasti kódu vzájemného vyloučení.

Upozorňující

Počínaje sadou Visual Studio 2015 jsou typy synchronizace standardní knihovny C++ založené na primitivách synchronizace Systému Windows a už nepoužívají ConcRT (s výjimkou případů, kdy je cílovou platformou Systém Windows XP). Typy definované v <mutex> by neměly být použity s žádnými typy nebo funkcemi ConcRT.

Požadavky

Záhlaví: <mutex>

Obor názvů: std

Poznámky

Poznámka:

V kódu, který je zkompilován pomocí /clr, je tato hlavička blokována.

mutex Třídy a recursive_mutex jsou typy mutex. Typ mutex má výchozí konstruktor a destruktor, který nevyvolá výjimky. Tyto objekty mají metody, které poskytují vzájemné vyloučení, když se více vláken pokusí uzamknout stejný objekt. Konkrétně typ mutex obsahuje metody lock, try_locka unlock:

  • Metoda lock blokuje volající vlákno, dokud vlákno nezískne vlastnictví mutex. Vrácená hodnota je ignorována.

  • Metoda try_lock se pokusí získat vlastnictví mutex bez blokování. Jeho návratový typ je konvertibilní na bool a je,pokud true metoda získá vlastnictví, ale je jinak false.

  • Metoda unlock uvolní vlastnictví mutex z volajícího vlákna.

Typy mutex můžete použít jako argumenty typu k vytvoření instance šablon a lock_guard unique_lock. Objekty těchto typů můžete použít jako Lock argument pro členské funkce čekání v šabloně condition_variable_any.

Typ časového mutexu splňuje požadavky na typ mutex. Kromě toho má try_lock_for a try_lock_until metody, které musí být volán pomocí jednoho argumentu a musí vrátit typ, který je konvertibilní na bool. Typ časového mutexu může tyto funkce definovat pomocí dalších argumentů za předpokladu, že všechny tyto další argumenty mají výchozí hodnoty.

  • Metoda try_lock_for musí být volán pomocí jednoho argumentu, Rel_timejehož typ je instance chrono::duration. Metoda se pokusí získat vlastnictví mutex, ale vrátí v době, která je určena Rel_time, bez ohledu na úspěch. Vrácená hodnota se převede na true , pokud metoda získá vlastnictví; v opačném případě se návratová hodnota převede na false.

  • Metoda try_lock_until musí být volán pomocí jednoho argumentu, Abs_timejehož typ je instance chrono::time_point. Metoda se pokusí získat vlastnictví mutex, ale ne později než čas určený Abs_time, bez ohledu na úspěch. Vrácená hodnota se převede na true , pokud metoda získá vlastnictví; v opačném případě se návratová hodnota převede na false.

Typ mutex se také označuje jako zamknutelný typ. Pokud nezadá členskou funkci try_lock, jedná se o základní zamknutelný typ. Typ časového mutexu se označuje jako typ s časovým uzamykatelným typem. Bloky časově uzamčeného typu po určitou dobu nebo do doby, než se zámek na mutex získá.

Členové

Třídy

Název Popis
lock_guard Třída Představuje šablonu, která lze vytvořit instanci objektu, jehož destruktor odemkne mutex.
mutex Třída (standardní knihovna jazyka C++) Představuje typ mutex. Pomocí objektů tohoto typu vynucujte vzájemné vyloučení v rámci programu.
recursive_mutex Třída Představuje typ mutex. Na rozdíl od mutex třídy je chování volání metod uzamčení pro objekty, které jsou již uzamčeny, dobře definované.
recursive_timed_mutex Třída Pomocí objektů tohoto typu vynucujte vzájemné vyloučení, které má v rámci programu časově omezené blokování. Na rozdíl od timed_mutex, účinek volání metod uzamčení pro recursive_timed_mutex objekty je dobře definován.
scoped_lock Třída
timed_mutex Třída Pomocí objektů tohoto typu vynucujte vzájemné vyloučení, které má v rámci programu časově omezené blokování.
unique_lock Třída Představuje šablonu, která se dá vytvořit instance pro vytváření objektů, které spravují uzamčení a odemčení objektu mutex.

Funkce

Název Popis
call_once Poskytuje mechanismus pro volání zadaného volatelného objektu přesně jednou během provádění.
lock Pokusí se uzamknout všechny argumenty bez zablokování.
swap Snaží se vyměnit vnitřní stavy dvou mutex objektů, x a y.
try_lock Pokusí se uzamknout uzamčený objekt. Vrátí okamžitě.

Struktury

Název Popis
adopt_lock_t Struktura Představuje typ, který se používá k definování .adopt_lock
defer_lock_t Struktura Představuje typ, který definuje defer_lock objekt, který se používá k výběru jednoho z přetížených konstruktorů unique_lock.
once_flag Struktura struct Představuje, který se používá s funkcí call_once šablony k zajištění, že inicializační kód je volán pouze jednou, a to i v přítomnosti více vláken provádění.
try_to_lock_t Struktura struct Představuje, který definuje try_to_lock objekt a slouží k výběru jednoho z přetížených konstruktorů unique_lock.

Proměnné

Název Popis
adopt_lock Představuje objekt, který lze předat konstruktory a lock_guard unique_lock indikovat, že mutex objekt, který je také předán konstruktoru je uzamčen.
defer_lock Představuje objekt, který lze předat konstruktoru pro unique_lock, indikuje, že konstruktor by neměl uzamknout mutex objekt, který je také předán do něj.
try_to_lock Představuje objekt, který lze předat konstruktoru, aby unique_lock indikoval, že konstruktor by se měl pokusit odemknout mutex objekt, který je také předán bez blokování.

Viz také

Referenční informace k souborům hlaviček