다음을 통해 공유


COINIT 열거형(objbase.h)

이 스레드에서 만든 개체에 대한 들어오는 호출에 사용되는 동시성 모델을 결정합니다. 이 동시성 모델은 아파트 스레드 또는 다중 스레드일 수 있습니다.

Syntax

typedef enum tagCOINIT {
  COINIT_APARTMENTTHREADED = 0x2,
  COINIT_MULTITHREADED = 0x0,
  COINIT_DISABLE_OLE1DDE = 0x4,
  COINIT_SPEED_OVER_MEMORY = 0x8
} COINIT;

상수

 
COINIT_APARTMENTTHREADED
값: 0x2
아파트 스레드 개체 동시성에 대한 스레드를 초기화합니다(설명 참조).
COINIT_MULTITHREADED
값: 0x0
다중 스레드 개체 동시성에 대한 스레드를 초기화합니다(설명 참조).
COINIT_DISABLE_OLE1DDE
값: 0x4
OLE1 지원을 위해 DDE를 사용하지 않도록 설정합니다.
COINIT_SPEED_OVER_MEMORY
값: 0x8
성능을 높이기 위해 메모리 사용량을 늘입니다.

설명

CoInitializeEx 호출을 통해 스레드가 초기화되면 COINIT의 멤버 중 하나를 두 번째 매개 변수로 지정하여 아파트 스레드 또는 다중 스레드로 초기화할지 여부를 선택합니다. 이는 해당 스레드에서 만든 모든 개체에 대한 수신 호출, 즉 개체의 동시성을 처리하는 방법을 지정합니다.

아파트 스레딩은 여러 스레드 실행을 허용하면서 이 스레드에서 만든 개체의 메서드에 대한 호출이 항상 동일한 스레드(즉, 생성된 아파트/스레드)에서 실행되도록 요구하여 들어오는 모든 호출을 직렬화합니다. 또한 호출은 메시지 큐 경계에만 도착할 수 있습니다. 이 serialization 때문에 일반적으로 다른 메서드 호출 또는 동일한 아파트/스레드의 다른 개체에 대한 호출에 의해 중단되어서는 안 되는 처리 중에 PeekMessageSendMessage 호출을 방지하는 것 외에는 개체의 코드에 동시성 제어를 쓸 필요가 없습니다.

다중 스레딩(자유 스레딩이라고도 함)을 사용하면 이 스레드에서 만든 개체의 메서드에 대한 호출을 모든 스레드에서 실행할 수 있습니다. 호출의 직렬화가 없습니다. 즉, 동일한 메서드 또는 동일한 개체 또는 동시에 많은 호출이 발생할 수 있습니다. 다중 스레드 개체 동시성은 가장 높은 성능을 제공하며 개체에 대한 호출이 어떤 방식으로도 직렬화되지 않으므로 크로스 스레드, 크로스 프로세스 및 컴퓨터 간 호출에 대한 다중 프로세서 하드웨어의 최상의 이점을 제공합니다. 그러나 이는 개체에 대한 코드가 일반적으로 중요한 섹션, 세마포 또는 뮤텍스와 같은 동기화 기본 형식을 사용하여 자체 동시성 모델을 적용해야 함을 의미합니다. 또한 개체가 액세스하는 스레드의 수명을 제어하지 않으므로 스레드별 상태가 개체( 스레드 로컬 스토리지)에 저장되지 않을 수 있습니다.

참고 다중 스레드 아파트는 비 GUI 스레드에서 사용하기 위한 것입니다. 다중 스레드 아파트의 스레드는 UI 작업을 수행해서는 안 됩니다. UI 스레드에는 메시지 펌프가 필요하고 COM은 다중 스레드 아파트의 스레드에 대한 메시지를 펌프하지 않기 때문입니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
머리글 objbase.h

추가 정보

CoInitializeEx

IInitializeSpy::P ostInitialize

IInitializeSpy::P reInitialize

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