Класс CCriticalSection
Представляющая "критическую секцию" — объект синхронизации, позволяющий один поток одновременно для доступа к ресурсу или раздел кода.
class CCriticalSection : public CSyncObject
Члены
Открытые конструкторы
Имя |
Описание |
---|---|
Создает объект CCriticalSection. |
Открытые методы
Имя |
Описание |
---|---|
Используйте, чтобы получить доступ к объекту CCriticalSection. |
|
Освобождает объект CCriticalSection. |
Открытые операторы
Имя |
Описание |
---|---|
Извлекает указатель на внутренний объект CRITICAL_SECTION. |
Открытые члены данных
Имя |
Описание |
---|---|
Объект CRITICAL_SECTION. |
Заметки
Критические секции удобны, если одновременно только один поток может разрешить для изменения данных или какой-либо другой контролируемому ресурсу.Например, добавление узлов к связанному списку процесс, который должен иметь разрешения только одним потоком.С помощью объекта CCriticalSection для управления связанного списка, одновременно только один поток может получить доступ к списку.
![]() |
---|
Функциональные возможности класса CCriticalSection предоставленная объектом CRITICAL_SECTION фактическая Win32. |
Критические секции используются вместо мьютексы (см. CMutex), когда скорость критическая и ресурс не будет использоваться через границы процессов.
2 Использование метода для объекта CCriticalSection : изолированный и внедренный в классе.
Изолированный метод для изолированного объекта CCriticalSection, создает объект CCriticalSection при необходимости.После успешного получения из конструктора следует явным образом блокирует объект с вызовом блокировка.Вызовите Unlock по завершении при доступе к критической секции.Этот метод, пока кто-нибудь при чтении clearer в свой исходный код, более прональн к ошибке, сколько необходимо помнить блокировать и Разблокировать критическая секция до и после доступа.
Наиболее предпочтительный метод использовать класс CSingleLock.Он также имеет метод Lock и Unlock, но не нужно беспокоиться о Разблокировать ресурс при возникновении исключения.
Внедренный метод также можно совместно использовать класс с несколькими потоками путем добавления CCriticalSection- введите элемент данных, к классу и блокировать элемент данных.
Дополнительные сведения об использовании объектов CCriticalSection см. в статье Многопоточность. Использование классов синхронизации.
Иерархия наследования
CCriticalSection
Требования
Header: afxmt.h