다음을 통해 공유


COM+ 스레드 모델

COM+ 스레딩 모델은 '아파트'라는 개체 집합을 중심으로 구성됩니다. 아파트는 다음 그림과 같이 프로세스에 포함된 컨텍스트의 컬렉션입니다.

프로세스 내에서 아파트 내의 활동에 있는 컨텍스트 컬렉션을 보여 주는 다이어그램입니다.

아파트 내의 통화는 직접적으로 이루어지지만, 서로 다른 아파트 간의 호출(프로세스 외 호출)은 간접적이며 프록시 및 스텁 코드가 필요합니다. 아파트는 동기화 및 재진입 속성이 서로 다른 개체를 허용하며 단일 스레드 및 다중 스레드의 두 가지 범주를 갖습니다. STA(단일 스레드 아파트)의 개체는 만들어진 특정 스레드에서 실행됩니다. STA는 한 번에 하나의 메서드만 실행할 수 있도록 허용합니다. 사용자 인터페이스용으로 설계되었으며 Microsoft Windows 메시지 큐를 사용하여 들어오는 호출을 처리합니다.

MTA(다중 스레드 아파트)의 개체는 스레드에서 실행되며 여러 메서드가 동시에 발생할 수 있습니다. MTA는 암시적으로 재진입을 지원합니다.

COM+ 클래스는 COM+에서 적절한 아파트에서 개체를 만들 수 있도록 하는 ThreadingModel 속성으로 표시됩니다. 개체가 어느 아파트에서 만들어지는지 결정하려면 CoCreateInstanceThreadingModel 속성을 사용합니다.

스레드는 COM+를 사용하기 전에 CoInitializeEx 호출해야 합니다. 이렇게 하면 올바른 아파트 및 컨텍스트 내에 해당 항목이 만들어집니다. 주 스레드 아파트는 CoInitializeEx에 의해 호출된 첫 번째 STA로 결정됩니다. 일반적으로 프로세스의 주 스레드와 연결됩니다. CoInitializeEx 다음 플래그를 설정하여 스레드에 필요한 아파트 유형을 나타냅니다.

  • COINIT_MULTITHREADED- 다중 스레드 아파트에 스레드를 배치합니다.
  • COINIT_APARTMENTTHREADED- 스레드를 새 STA에 배치합니다.

이 섹션의 다음 항목에서는 COM+에서 스레딩 모델 및 아파트 사용에 대한 자세한 정보를 제공합니다.

프로세스, 스레드 및 아파트

스레딩모델