Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Этот класс предоставляет методы для получения и освобождения владения критически важным объектом раздела.
Синтаксис
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