<mutex>
Zahrňte standardní hlavičku <mutex>
pro definování tříd mutex
, recursive_mutex
, timed_mutex
a 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_lock
a 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í nabool
a je,pokudtrue
metoda získá vlastnictví, ale je jinakfalse
.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_time
jehož typ je instancechrono::duration
. Metoda se pokusí získat vlastnictví mutex, ale vrátí v době, která je určenaRel_time
, bez ohledu na úspěch. Vrácená hodnota se převede natrue
, pokud metoda získá vlastnictví; v opačném případě se návratová hodnota převede nafalse
.Metoda
try_lock_until
musí být volán pomocí jednoho argumentu,Abs_time
jehož typ je instancechrono::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 natrue
, pokud metoda získá vlastnictví; v opačném případě se návratová hodnota převede nafalse
.
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í. |