Udostępnij za pośrednictwem


Klasa CCriticalSection

Reprezentuje "sekcji krytycznej" — obiekt synchronizacji, który umożliwia jeden wątek jednocześnie dostęp do zasobów lub sekcji kodu.

class CCriticalSection : public CSyncObject

Członkowie

Publiczne konstruktory

Nazwa

Opis

CCriticalSection::CCriticalSection

Konstrukcje CCriticalSection obiektu.

Metody publiczne

Nazwa

Opis

CCriticalSection::Lock

Służy do uzyskiwania dostępu do CCriticalSection obiektu.

CCriticalSection::Unlock

Wydanie CCriticalSection obiektu.

Podmioty publiczne

Nazwa

Opis

CCriticalSection::operator CRITICAL_SECTION *

Pobiera wskaźnik do wewnętrznego CRITICAL_SECTION obiektu.

Publiczne danych członków

Nazwa

Opis

CCriticalSection::m_sect

A CRITICAL_SECTION obiektu.

Uwagi

Sekcje krytyczne są przydatne tylko jeden wątek na raz można zezwolić na modyfikowanie danych lub kontrolowanych zasobów.Na przykład dodawanie do połączonej listy węzłów jest proces, który powinny być dozwolone tylko przez jeden wątek na raz.Za pomocą CCriticalSection obiektu do sterowania połączonej listy tylko jeden wątek na raz można uzyskać dostęp do listy.

[!UWAGA]

Funkcje CCriticalSection klasy jest dostarczana przez rzeczywiste Win32 CRITICAL_SECTION obiektu.

Sekcje krytyczne są używane zamiast muteksy (zobacz CMutex) gdy prędkość jest krytyczna i zasobu nie będzie używany przez granice procesu.

Istnieją dwie metody za pomocą CCriticalSection obiekt: autonomiczne i osadzone w klasie.

  • Autonomiczny autonomicznych metodę CCriticalSection obiektów, skonstruować CCriticalSection obiektu, gdy jest potrzebna.Po pomyślnym powrocie z konstruktora, jawnie zablokować wywołania obiektu blokady.Wywołanie Unlock po zakończeniu dostęp do sekcji krytycznej.Ta metoda podczas jaśniejszym, aby osoba czytająca Twój kod źródłowy jest bardziej podatne na błędy, jak należy pamiętać o blokowanie i odblokowywanie sekcji krytycznej, przed i po dostępu.

    Metodą bardziej pożądane jest wykorzystanie CSingleLock klasy.Posiada także Lock i Unlock metody, ale nie trzeba się martwić o odblokowanie zasobu, jeśli wystąpi wyjątek.

  • Metoda klasy można współużytkować z wielu wątków, dodając osadzone CCriticalSection-członek danych typu klasy i blokowanie członka danych, gdy są potrzebne.

Aby uzyskać więcej informacji na temat używania CCriticalSection obiektów, zobacz artykuł Multithreading: jak używać klasy synchronizacji.

Hierarchii dziedziczenia

CObject

CSyncObject

CCriticalSection

Wymagania

Nagłówek: afxmt.h

Zobacz też

Informacje

Klasa CSyncObject

Diagram hierarchii

Klasa CMutex