Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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
lockblokuje volající vlákno, dokud vlákno nezískne vlastnictví mutex. Vrácená hodnota je ignorována.Metoda
try_lockse pokusí získat vlastnictví mutex bez blokování. Jeho návratový typ je konvertibilní naboola je,pokudtruemetoda získá vlastnictví, ale je jinakfalse.Metoda
unlockuvolní 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_formusí být volán pomocí jednoho argumentu,Rel_timejehož 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_untilmusí být volán pomocí jednoho argumentu,Abs_timejehož 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í. |