Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Nieententrant mutex, który jest jawnie świadomy środowiska uruchomieniowego współbieżności.
Składnia
class critical_section;
Elementy członkowskie
Definicje typów publicznych
| Nazwa/nazwisko | opis |
|---|---|
native_handle_type |
Odwołanie do critical_section obiektu. |
Klasy publiczne
| Nazwa/nazwisko | opis |
|---|---|
| klasa critical_section::scoped_lock | Bezpieczna otoka RAII dla critical_section obiektu. |
Konstruktory publiczne
| Nazwa/nazwisko | opis |
|---|---|
| critical_section | Tworzy nową sekcję krytyczną. |
| ~critical_section Destruktor | Niszczy sekcję krytyczną. |
Metody publiczne
| Nazwa/nazwisko | opis |
|---|---|
| lock | Uzyskuje tę sekcję krytyczną. |
| native_handle | Zwraca natywny uchwyt specyficzny dla platformy, jeśli istnieje. |
| try_lock | Próbuje uzyskać blokadę bez blokowania. |
| try_lock_for | Próbuje uzyskać blokadę bez blokowania określonej liczby milisekund. |
| Odblokować | Odblokowuje sekcję krytyczną. |
Uwagi
Aby uzyskać więcej informacji, zobacz Synchronizacja struktur danych.
Hierarchia dziedziczenia
critical_section
Wymagania
Nagłówek: concrt.h
Przestrzeń nazw: współbieżność
critical_section
Tworzy nową sekcję krytyczną.
critical_section();
~critical_section
Niszczy sekcję krytyczną.
~critical_section();
Uwagi
Oczekuje się, że blokada nie jest już przechowywana podczas uruchamiania destruktora. Zezwalanie sekcji krytycznej na destrukcję blokady nadal powoduje niezdefiniowane zachowanie.
lock
Uzyskuje tę sekcję krytyczną.
void lock();
Uwagi
Często bezpieczniejsze jest wykorzystanie konstrukcji scoped_lock w celu uzyskania i uwolnienia critical_section obiektu w bezpieczny sposób.
Jeśli blokada jest już przechowywana przez kontekst wywołujący, zostanie zgłoszony wyjątek improper_lock .
native_handle
Zwraca natywny uchwyt specyficzny dla platformy, jeśli istnieje.
native_handle_type native_handle();
Wartość zwracana
Odwołanie do sekcji krytycznej.
Uwagi
critical_section Obiekt nie jest skojarzony z konkretnym natywnym dojściem platformy dla systemu operacyjnego Windows. Metoda po prostu zwraca odwołanie do samego obiektu.
klasa critical_section::scoped_lock
Bezpieczna otoka RAII dla critical_section obiektu.
class scoped_lock;
scoped_lock::scoped_lock
scoped_lock Tworzy obiekt i uzyskuje critical_section obiekt przekazany w parametrze _Critical_section . Jeśli sekcja krytyczna jest przechowywana przez inny wątek, to wywołanie zostanie zablokowane.
explicit _CRTIMP scoped_lock(critical_section& _Critical_section);
Parametry
_Critical_section
Sekcja krytyczna do zablokowania.
scoped_lock::~scoped_lock
Niszczy obiekt i zwalnia sekcję krytyczną scoped_lock podaną w konstruktorze.
~scoped_lock();
try_lock
Próbuje uzyskać blokadę bez blokowania.
bool try_lock();
Wartość zwracana
Jeśli blokada została uzyskana, wartość true; w przeciwnym razie wartość false.
try_lock_for
Próbuje uzyskać blokadę bez blokowania określonej liczby milisekund.
bool try_lock_for(unsigned int _Timeout);
Parametry
_Limit czasu
Liczba milisekund oczekiwania przed upływem limitu czasu.
Wartość zwracana
Jeśli blokada została uzyskana, wartość true; w przeciwnym razie wartość false.
Odblokować
Odblokowuje sekcję krytyczną.
void unlock();