Класс CCriticalSection

Представляющая "критическую секцию" — объект синхронизации, позволяющий один поток одновременно для доступа к ресурсу или раздел кода.

class CCriticalSection : public CSyncObject

Члены

Открытые конструкторы

Имя

Описание

CCriticalSection::CCriticalSection

Создает объект CCriticalSection.

Открытые методы

Имя

Описание

CCriticalSection::Lock

Используйте, чтобы получить доступ к объекту CCriticalSection.

CCriticalSection::Unlock

Освобождает объект CCriticalSection.

Открытые операторы

Имя

Описание

CCriticalSection::operator CRITICAL_SECTION*

Извлекает указатель на внутренний объект CRITICAL_SECTION.

Открытые члены данных

Имя

Описание

CCriticalSection::m_sect

Объект CRITICAL_SECTION.

Заметки

Критические секции удобны, если одновременно только один поток может разрешить для изменения данных или какой-либо другой контролируемому ресурсу. Например, добавление узлов к связанному списку процесс, который должен иметь разрешения только одним потоком. С помощью объекта CCriticalSection для управления связанного списка, одновременно только один поток может получить доступ к списку.

Примечание

Функциональные возможности класса CCriticalSection предоставленная объектом CRITICAL_SECTION фактическая Win32.

Критические секции используются вместо мьютексы (см. CMutex), когда скорость критическая и ресурс не будет использоваться через границы процессов.

2 Использование метода для объекта CCriticalSection : изолированный и внедренный в классе.

  • Изолированный метод для изолированного объекта CCriticalSection, создает объект CCriticalSection при необходимости. После успешного получения из конструктора следует явным образом блокирует объект с вызовом блокировка. Вызовите Unlock по завершении при доступе к критической секции. Этот метод, пока кто-нибудь при чтении clearer в свой исходный код, более прональн к ошибке, сколько необходимо помнить блокировать и Разблокировать критическая секция до и после доступа.

    Наиболее предпочтительный метод использовать класс CSingleLock. Он также имеет метод Lock и Unlock, но не нужно беспокоиться о Разблокировать ресурс при возникновении исключения.

  • Внедренный метод также можно совместно использовать класс с несколькими потоками путем добавления CCriticalSection- введите элемент данных, к классу и блокировать элемент данных.

Дополнительные сведения об использовании объектов CCriticalSection см. в статье Многопоточность. Использование классов синхронизации.

Иерархия наследования

CObject

CSyncObject

CCriticalSection

Требования

Header: afxmt.h

См. также

Ссылки

Класс CSyncObject

Диаграмма иерархии

Класс CMutex