HOWTO: ATL에서 스레드 풀(Thread-Pooled), 분산 모델 COM 서버 구현

기술 자료 번역 기술 자료 번역
기술 자료: 244495 - 이 문서가 적용되는 제품 보기.
이 문서는 이전에 다음 ID로 출판되었음: KR244495
모두 확대 | 모두 축소

요약

Microsoft Active Template Library(ATL)를 사용하면 생성된 개체가 자신만의 스레드에서 실행하도록 ATL 독립 프로세스(Out Of Process) 서버에 STA 스레드의 풀을 정의할 수 있습니다. 이 작업을 수행하는 방법은 본 문서의 "추가 정보" 절에서 설명합니다.

추가 정보

스레드 풀에서 개체를 만들려면 아래와 같은 단계를 수행해야 합니다.
  1. 아래의 클래스로부터 CExeModule 또는 CServiceModule 클래스를 만듭니다.
    CComAutoThreadModule<>
    
    CExeModule : public CComAutoThreadModule<>
    
  2. STA 풀 스레드에서 실행될 수 있는 각 ATL 클래스에서 DECLARE_CLASSFACTORY_AUTO_THREAD()를 선언합니다.
  3. STA 풀 스레드에서 실행될 수 있는 각 ATL 클래스에서 DECLARE_NOT_AGGREGATABLE()을 선언합니다.
    DECLARE_NOT_AGGREGATABLE(CMyPooledObject)
    
  4. 아래 메서드를 호출하기 위해 모듈 CExeModule::Unlock() 또는 CServiceModule::Unlock() 메서드를 수정합니다.
    CComAutoThreadModule<>::Unlock()
    
    LONG CExeModule::Unlock()
    {
       LONG l = CComAutoThreadModule<>::Unlock();
       if (l == 0)
       {
         bActivity = true;
         SetEvent(hEventShutdown); // tell monitor that we transitioned to zero
       }
       return l;
    }
    
서비스를 위해 이 작업을 수행하는 경우에는 추가로 한 단계가 더 필요합니다. 다음의 코드를
inline void CServiceModule::Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID, const GUID* plibid)
{
   CComModule::Init(p, h, plibid);
아래와 같이 수정합니다.
inline void CServiceModule::Init(_ATL_OBJMAP_ENTRY* p, HINSTANCE h, UINT nServiceNameID, const GUID* plibid)
{
   CComAutoThreadModule<>::Init(p, h, plibid);
기본적으로 ATL은 프로세서 당 네 개의 스레드를 가진 풀을 만듭니다. 선택적인 네 번째 매개 변수에 스레드의 개수를 지정함으로써 tWinMain() 함수의 _Module.Init() 호출에서 이를 변경할 수 있습니다. 기본적으로 CComAutoThreadModule은 스레드 할당자(Thread Allocator)로 CComSimpleThreadAllocator를 사용합니다. CComSimpleThreadAllocator는 간단한 라운드 로빈(Round Robin) 구성표를 사용하여 스레드 풀에서 개체를 만듭니다.

참조

자세한 내용은 DECLARE_CLASS_FACTORY_AUTO_THREAD(), CComAutoThreadModule 및 MSDN(Microsoft Developer's Network)을 참조하십시오.

202128 BUG: ATL EXE Server Based on CComAutoThreadModule May Hang on Registration

속성

기술 자료: 244495 - 마지막 검토: 2000년 2월 4일 금요일 - 수정: 1.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Microsoft ActiveX Template Library 3.0
키워드:?
kbactivex kbarchitecture kbatl300 kbcomt kbgrpmfcatl kblocalsvr kbservice kbthread kbvc600 KB244495
더 이상 지원되지 않는 제품의 KB 내용에 대한 고지 사항
이 문서에서는 Microsoft에서 더 이상 지원하지 않는 제품에 대해 설명합니다. 따라서 이 문서는 "있는 그대로" 제공되며 업데이트되지 않습니다.

피드백 보내기

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com