CComMultiThreadModel::AutoCriticalSection
사용 하는 경우 CComMultiThreadModel, typedef 이름 AutoCriticalSection 클래스를 참조 CComAutoCriticalSection, 얻고 중요 섹션 개체의 소유권을 해제에 대 한 방법을 제공 합니다.
구문
typedef CComAutoCriticalSection AutoCriticalSection;
설명
CComSingleThreadModel 및 CComMultiThreadModelNoCS 에 대 한 정의 포함 AutoCriticalSection. 다음 표에서 참조 하 여 임계 클래스 및 스레딩 모델 클래스 간의 관계 AutoCriticalSection.
클래스 정의 |
클래스 참조 |
---|---|
CComMultiThreadModel |
CComCriticalSection |
CComSingleThreadModel |
CComFakeCriticalSection |
CComMultiThreadModelNoCS |
CComFakeCriticalSection |
이외에 AutoCriticalSection, 사용할 수 있는 typedef 이름 CriticalSection. 지정 해야 AutoCriticalSection 에서 CRT 시작 코드를 제거 하려면 정적 클래스 멤버 또는 전역 개체입니다.
예제
다음 코드 모델로 CComObjectRootEx, 보여 줍니다 AutoCriticalSection 스레드 환경에서 사용 되 고 있습니다.
template< class ThreadModel >
class CMyAutoCritClass
{
public:
typedef ThreadModel _ThreadModel;
typedef typename _ThreadModel::AutoCriticalSection _CritSec;
CMyAutoCritClass() : m_dwRef(0) {}
ULONG InternalAddRef()
{
return _ThreadModel::Increment(&m_dwRef);
}
ULONG InternalRelease()
{
return _ThreadModel::Decrement(&m_dwRef);
}
void Lock() { m_critsec.Lock( ); }
void Unlock() { m_critsec.Unlock(); }
private:
_CritSec m_critsec;
LONG m_dwRef;
};
결과를 다음 표에 표시 된 InternalAddRef 및 Lock 방법에 따라는 ThreadModel 템플릿 매개 변수 및 응용 프로그램에서 사용 하는 스레딩 모델:
ThreadModel = CComObjectThreadModel
메서드 |
단일 또는 아파트 스레딩 |
자유 스레딩 |
---|---|---|
InternalAddRef |
증분 스레드로부터 안전 하지 않습니다. |
스레드로부터 안전한 증분입니다. |
Lock |
아무 작업도 하지 않습니다. 잠글 수 없는 임계 영역이입니다. |
중요 섹션은 잠깁니다. |
ThreadModel = CComObjectThreadModel::ThreadModelNoCS
메서드 |
단일 또는 아파트 스레딩 |
자유 스레딩 |
---|---|---|
InternalAddRef |
증분 스레드로부터 안전 하지 않습니다. |
스레드로부터 안전한 증분입니다. |
Lock |
아무 작업도 하지 않습니다. 잠글 수 없는 임계 영역이입니다. |
아무 작업도 하지 않습니다. 잠글 수 없는 임계 영역이입니다. |
요구 사항
헤더: atlbase.h
참고 항목
CComMultiThreadModel Class
CComObjectThreadModel
CComGlobalsThreadModel
CComMultiThreadModel::ThreadModelNoCS