Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Замечание
Библиотека активных шаблонов (ATL) продолжает поддерживаться. Однако мы больше не добавляем функции или обновляем документацию.
Этот класс предоставляет методы для получения и освобождения владения критически важным объектом раздела.
Синтаксис
class CComCriticalSection
Участники
Открытые конструкторы
| Имя | Описание |
|---|---|
| CComCriticalSection::CComCriticalSection | Конструктор. |
Открытые методы
| Имя | Описание |
|---|---|
| CComCriticalSection::Init | Создает и инициализирует объект критического раздела. |
| CComCriticalSection::Lock | Получает владение объектом критического раздела. |
| CComCriticalSection::Term | Освобождает системные ресурсы, используемые объектом критического раздела. |
| CComCriticalSection::Unlock | Освобождает владение объектом критического раздела. |
Открытые члены данных
| Имя | Описание |
|---|---|
| CComCriticalSection::m_sec | Объект CRITICAL_SECTION. |
Замечания
CComCriticalSection аналогичен классу CComAutoCriticalSection, за исключением того, что необходимо явно инициализировать и освободить критически важный раздел.
Как правило, используется CComCriticalSection имя typedefCriticalSection. Это имя ссылается на 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