critical_section — Klasa

Nieententrant mutex, który jest jawnie świadomy środowiska uruchomieniowego współbieżności.

Składnia

class critical_section;

Członkowie

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();

Zobacz też

Przestrzeń nazw współbieżności
reader_writer_lock, klasa