critical_section – třída
Nereentrantní mutex, který explicitně ví o concurrency Runtime.
Syntaxe
class critical_section;
Členové
Veřejné definice typedef
Název | Popis |
---|---|
native_handle_type |
Odkaz na critical_section objekt. |
Veřejné třídy
Název | Popis |
---|---|
critical_section::scoped_lock – třída | Výjimkou bezpečné obálky RAII pro critical_section objekt. |
Veřejné konstruktory
Název | Popis |
---|---|
critical_section | Vytvoří novou kritickou část. |
~critical_section Destruktor | Zničí kritickou část. |
Veřejné metody
Název | Popis |
---|---|
lock | Získá tuto kritickou část. |
native_handle | Vrátí nativní popisovač specifický pro platformu, pokud existuje. |
try_lock | Pokusí se získat zámek bez blokování. |
try_lock_for | Pokusí se získat zámek bez blokování určitého počtu milisekund. |
odemknout | Odemkne kritickou část. |
Poznámky
Další informace naleznete v tématu Synchronizace datových struktur.
Hierarchie dědičnosti
critical_section
Požadavky
Hlavička: concrt.h
Obor názvů: souběžnost
critical_section
Vytvoří novou kritickou část.
critical_section();
~critical_section
Zničí kritickou část.
~critical_section();
Poznámky
Očekává se, že zámek se už při spuštění destruktoru neudrží. Povolením kritického oddílu destrukci zámkem stále dochází k nedefinovaným chováním.
lock
Získá tuto kritickou část.
void lock();
Poznámky
Často je bezpečnější využívat konstruktor scoped_lock k získání a uvolnění critical_section
objektu bezpečným způsobem.
Pokud zámek již existuje v kontextu volání, vyvolá se výjimka improper_lock .
native_handle
Vrátí nativní popisovač specifický pro platformu, pokud existuje.
native_handle_type native_handle();
Návratová hodnota
Odkaz na kritickou část.
Poznámky
critical_section
Objekt není přidružený k nativnímu popisovači specifické pro platformu pro operační systém Windows. Metoda jednoduše vrátí odkaz na samotný objekt.
critical_section::scoped_lock – třída
Výjimkou bezpečné obálky RAII pro critical_section
objekt.
class scoped_lock;
scoped_lock::scoped_lock
scoped_lock
Vytvoří objekt a získá critical_section
objekt předaný v parametru_Critical_section
. Pokud je kritický oddíl uchován jiným vláknem, toto volání se zablokuje.
explicit _CRTIMP scoped_lock(critical_section& _Critical_section);
Parametry
_Critical_section
Kritická část, která se má uzamknout.
scoped_lock::~scoped_lock
scoped_lock
Zničí objekt a uvolní kritický oddíl zadaný v jeho konstruktoru.
~scoped_lock();
try_lock
Pokusí se získat zámek bez blokování.
bool try_lock();
Návratová hodnota
Pokud byl zámek získán, hodnota true
; jinak hodnota false
.
try_lock_for
Pokusí se získat zámek bez blokování určitého počtu milisekund.
bool try_lock_for(unsigned int _Timeout);
Parametry
_Přerušení zápasu
Počet milisekund, které se mají před uplynutím časového limitu počkat.
Návratová hodnota
Pokud byl zámek získán, hodnota true
; jinak hodnota false
.
odemknout
Odemkne kritickou část.
void unlock();