Класс CComCriticalSection
Этот класс предоставляет методы для получения и освобождения владения критически важным объектом раздела.
Синтаксис
class CComCriticalSection
Участники
Открытые конструкторы
Имя | Описание |
---|---|
CComCriticalSection::CComCriticalSection | Конструктор. |
Открытые методы
Имя | Описание |
---|---|
CComCriticalSection::Init | Создает и инициализирует объект критического раздела. |
CComCriticalSection::Lock | Получает владение объектом критического раздела. |
CComCriticalSection::Term | Освобождает системные ресурсы, используемые объектом критического раздела. |
CComCriticalSection::Unlock | Освобождает владение объектом критического раздела. |
Открытые члены данных
Имя | Описание |
---|---|
CComCriticalSection::m_sec | Объект CRITICAL_SECTION. |
Замечания
CComCriticalSection
аналогичен классу CComAutoCriticalSection, за исключением того, что необходимо явно инициализировать и освободить критически важный раздел.
Как правило, используется CComCriticalSection
имя typedef
CriticalSection. Это имя ссылается на CComCriticalSection
, если используется CComMultiThreadModel.
См . класс CComCritSecLock для более безопасного использования этого класса, чем вызов Lock
и Unlock
непосредственно.
Требования
Заголовок: atlcore.h
CComCriticalSection::CComCriticalSection
Конструктор.
CComCriticalSection() throw();
Замечания
Задает элемент данных m_sec значение NULL.
CComCriticalSection::Init
Вызывает функцию Win32 InitializeCriticalSection, которая инициализирует объект критического раздела, содержащийся в элементе данных m_sec .
HRESULT Init() throw();
Возвращаемое значение
Возвращает S_OK при успешном выполнении E_OUTOFMEMORY или E_FAIL при сбое.
CComCriticalSection::Lock
Вызывает функцию Win32 EnterCriticalSection, которая ожидает, пока поток не сможет взять на себя владение критически важным объектом раздела, содержащимся в элементе данных m_sec .
HRESULT Lock() throw();
Возвращаемое значение
Возвращает S_OK при успешном выполнении E_OUTOFMEMORY или E_FAIL при сбое.
Замечания
Объект критического раздела должен быть инициализирован с помощью вызова метода Init . После завершения выполнения защищенного кода поток должен вызвать разблокировку , чтобы освободить владение критически важным разделом.
CComCriticalSection::m_sec
Содержит критически важный объект раздела, используемый всеми CComCriticalSection
методами.
CRITICAL_SECTION m_sec;
CComCriticalSection::Term
Вызывает функцию Win32 DeleteCriticalSection, которая освобождает все ресурсы, используемые объектом критического раздела, содержащимся в элементе данных m_sec .
HRESULT Term() throw();
Возвращаемое значение
Возвращает S_OK.
Замечания
После Term
вызова критически важный раздел больше не может использоваться для синхронизации.
CComCriticalSection::Unlock
Вызывает функцию Win32 LeaveCriticalSection, которая освобождает владение критически важным объектом раздела, содержащимся в элементе данных m_sec .
HRESULT Unlock() throw();
Возвращаемое значение
Возвращает S_OK.
Замечания
Чтобы сначала получить владение, поток должен вызвать метод Lock . Каждому вызову требуется соответствующий вызов Lock
для Unlock
освобождения владения критически важным разделом.
См. также
Класс CComFakeCriticalSection
Общие сведения о классе
Класс CComCritSecLock