Sdílet prostřednictvím


critical_section – třída

Nereentrantní mutex, který explicitně ví o concurrency Runtime.

Syntaxe

class critical_section;

Členové

Veřejné definice typedef

Jméno popis
native_handle_type Odkaz na critical_section objekt.

Veřejné třídy

Jméno popis
critical_section::scoped_lock – třída Výjimkou bezpečné obálky RAII pro critical_section objekt.

Veřejné konstruktory

Jméno popis
critical_section Vytvoří novou kritickou část.
~critical_section Destruktor Zničí kritickou část.

Veřejné metody

Jméno 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();

Vrácená 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();

Vrácená 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

_Časový limit
Počet milisekund, které se mají před uplynutím časového limitu počkat.

Vrácená hodnota

Pokud byl zámek získán, hodnota true; jinak hodnota false.

Odemknout

Odemkne kritickou část.

void unlock();

Viz také

concurrency – obor názvů
reader_writer_lock – třída