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ż
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla