다음을 통해 공유


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 모듈의 아파트를 관리합니다.

설명

참고 항목

이 클래스는 사용되지 않으며 CAtlAutoThreadModuleCAtlModule 파생 클래스로 대체되었습니다. 다음 정보는 이전 버전의 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;
};

상속 계층 구조

_ATL_MODULE

CAtlModule

IAtlAutoThreadModule

CAtlModuleT

CAtlAutoThreadModuleT

CComModule

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 WinMainHINSTANCE입니다.

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에 도달하면 모듈을 언로드할 수 있습니다.

참고 항목

클래스 개요
모듈 클래스