CComAutoThreadModule 클래스
ATL 7.0 CComAutoThreadModule
을 기준으로 사용되지 않습니다. 자세한 내용은 ATL 모듈 클래스를 참조하세요.
Important
이 클래스와 해당 멤버는 Windows 런타임에서 실행되는 애플리케이션에서 사용할 수 없습니다.
구문
template <class ThreadAllocator = CComSimpleThreadAllocator>
class CComAutoThreadModule : public CComModule
매개 변수
ThreadAllocator
[in] 스레드 선택을 관리하는 클래스입니다. 기본값은 CComSimpleThreadAllocator입니다.
멤버
메서드
함수 | 설명 |
---|---|
CreateInstance | 스레드를 선택한 다음 연결된 아파트에 개체를 만듭니다. |
GetDefaultThreads | (정적) 프로세서 수에 따라 모듈의 스레드 수를 동적으로 계산합니다. |
Init | 모듈의 스레드를 만듭니다. |
잠금 | 모듈 및 현재 스레드의 잠금 수를 증분합니다. |
Unlock | 모듈 및 현재 스레드의 잠금 수를 줄입니다. |
데이터 멤버
데이터 멤버 | 설명 |
---|---|
dwThreadID | 현재 스레드의 식별자를 포함합니다. |
m_Allocator | 스레드 선택을 관리합니다. |
m_nThreads | 모듈의 스레드 수를 포함합니다. |
m_pApartments | 모듈의 아파트를 관리합니다. |
설명
참고 항목
이 클래스는 사용되지 않으며 CAtlAutoThreadModule 및 CAtlModule 파생 클래스로 대체되었습니다. 다음 정보는 이전 버전의 ATL에서 사용하기 위한 것입니다.
CComAutoThreadModule
는 CComModule에서 파생되어 EXE 및 Windows 서비스용 스레드 풀, 아파트 모델 COM 서버를 구현합니다. CComAutoThreadModule
는 CComApartment를 사용하여 모듈의 각 스레드에 대한 아파트를 관리합니다.
여러 아파트에서 개체를 만들려는 경우 모듈 CComAutoThreadModule
을 파생합니다. 또한 CComClassFactoryAutoThread를 클래스 팩터리로 지정하려면 개체의 클래스 정의에 DECLARE_CLASSFACTORY_AUTO_THREAD 매크로를 포함해야 합니다.
기본적으로 ATL COM AppWizard(Visual Studio .NET의 ATL 프로젝트 마법사)는 모듈을 파생 CComModule
합니다. 사용 CComAutoThreadModule
하려면 클래스 정의를 수정합니다. 예시:
class CMyModule :
public CComAutoThreadModule<CComSimpleThreadAllocator>
{
public:
LONG Unlock()
{
LONG l = CComAutoThreadModule<CComSimpleThreadAllocator>::Unlock();
if (l == 0)
PostThreadMessage(dwThreadID, WM_QUIT, 0, 0);
return l;
}
DWORD dwThreadID;
};
상속 계층 구조
IAtlAutoThreadModule
CComAutoThreadModule
요구 사항
헤더: atlbase.h
CComAutoThreadModule::CreateInstance
ATL 7.0 CComAutoThreadModule
을 기준으로 사용되지 않습니다. 자세한 내용은 ATL 모듈 클래스를 참조하세요.
HRESULT CreateInstance(
void* pfnCreateInstance,
REFIID riid,
void** ppvObj);
매개 변수
pfnCreateInstance
[in] 작성자 함수에 대한 포인터입니다.
riid
[in] 요청된 인터페이스의 IID입니다.
ppvObj
[out] riid로 식별되는 인터페이스 포인터에 대한 포인터입니다. 개체가 이 인터페이스 를 지원하지 않으면 ppvObj 가 NULL로 설정됩니다.
Return Value
표준 HRESULT 값입니다.
설명
스레드를 선택한 다음 연결된 아파트에 개체를 만듭니다.
CComAutoThreadModule::d wThreadID
ATL 7.0 CComAutoThreadModule
을 기준으로 사용되지 않습니다. 자세한 내용은 ATL 모듈 클래스를 참조하세요.
DWORD dwThreadID;
설명
현재 스레드의 식별자를 포함합니다.
CComAutoThreadModule::GetDefaultThreads
ATL 7.0 CComAutoThreadModule
을 기준으로 사용되지 않습니다. 자세한 내용은 ATL 모듈 클래스를 참조하세요.
static int GetDefaultThreads();
Return Value
EXE 모듈에서 만들 스레드 수입니다.
설명
이 정적 함수는 프로세서 수에 따라 EXE 모듈의 최대 스레드 수를 동적으로 계산합니다. 기본적으로 이 반환 값은 스레드를 만들기 위해 Init 메서드에 전달됩니다.
CComAutoThreadModule::Init
ATL 7.0 CComAutoThreadModule
을 기준으로 사용되지 않습니다. 자세한 내용은 ATL 모듈 클래스를 참조하세요.
HRESULT Init(
_ATL_OBJMAP_ENTRY* p,
HINSTANCE h,
const GUID* plibid = NULL,
int nThreads = GetDefaultThreads());
매개 변수
p
[in] 개체 맵 항목 배열에 대한 포인터입니다.
시간
[in] 또는 에 전달된 DLLMain
WinMain
HINSTANCE입니다.
plibid
[in] 프로젝트와 연결된 형식 라이브러리의 LIBID에 대한 포인터입니다.
nThreads
[in] 만들 스레드 수입니다. 기본적으로 nThreads 는 GetDefaultThreads에서 반환되는 값입니다.
설명
데이터 멤버를 초기화하고 nThreads로 지정된 스레드 수를 만듭니다.
CComAutoThreadModule::Lock
ATL 7.0 CComAutoThreadModule
을 기준으로 사용되지 않습니다. 자세한 내용은 ATL 모듈 클래스를 참조하세요.
LONG Lock();
Return Value
진단 또는 테스트에 유용할 수 있는 값입니다.
설명
모듈 및 현재 스레드의 잠금 수에 대해 원자성 증분을 수행합니다. CComAutoThreadModule
는 모듈 잠금 수를 사용하여 클라이언트가 모듈에 액세스하는지 여부를 확인합니다. 현재 스레드의 잠금 수는 통계 목적으로 사용됩니다.
CComAutoThreadModule::m_Allocator
ATL 7.0 CComAutoThreadModule
을 기준으로 사용되지 않습니다. 자세한 내용은 ATL 모듈 클래스를 참조하세요.
ThreadAllocator m_Allocator;
설명
스레드 선택을 관리하는 개체입니다. 기본적으로 ThreadAllocator
클래스 템플릿 매개 변수는 CComSimpleThreadAllocator입니다.
CComAutoThreadModule::m_nThreads
ATL 7.0 CComAutoThreadModule
을 기준으로 사용되지 않습니다. 자세한 내용은 ATL 모듈 클래스를 참조하세요.
int m_nThreads;
설명
EXE 모듈의 스레드 수를 포함합니다. Init가 호출 m_nThreads
되면 nThreads 매개 변수 값으로 설정됩니다. 각 스레드의 연결된 아파트는 CComApartment 개체에 의해 관리됩니다.
CComAutoThreadModule::m_pApartments
ATL 7.0 CComAutoThreadModule
을 기준으로 사용되지 않습니다. 자세한 내용은 ATL 모듈 클래스를 참조하세요.
CComApartment* m_pApartments;
설명
모듈의 아파트를 관리하는 CComApartment 개체의 배열을 가리킵니다. 배열의 요소 수는 m_nThreads 멤버를 기반으로 합니다.
CComAutoThreadModule::Unlock
ATL 7.0 CComAutoThreadModule
을 기준으로 사용되지 않습니다. 자세한 내용은 ATL 모듈 클래스를 참조하세요.
LONG Unlock();
Return Value
진단 또는 테스트에 유용할 수 있는 값입니다.
설명
모듈 및 현재 스레드의 잠금 수에 대한 원자성 감소를 수행합니다. CComAutoThreadModule
는 모듈 잠금 수를 사용하여 클라이언트가 모듈에 액세스하는지 여부를 확인합니다. 현재 스레드의 잠금 수는 통계 목적으로 사용됩니다.
모듈 잠금 수가 0에 도달하면 모듈을 언로드할 수 있습니다.