ATL 및 자유 스레드된 마샬러
ATL 단순 개체 마법사의 특성 페이지에서는 클래스가 자유 스레드 마샬러(FTM)를 집계할 수 있는 옵션을 제공합니다.
마법사는 무료 스레드 마샬러 FinalConstruct
의 인스턴스를 만들고 해당 인스턴스 FinalRelease
를 해제하는 코드를 생성합니다. COM_INTERFACE_ENTRY_AGGREGATE 매크로는 IMarshal에 대한 요청이 QueryInterface
자유 스레드 마샬러에 의해 처리되도록 COM 맵에 자동으로 추가됩니다.
무료 스레드 마샬러는 동일한 프로세스의 스레드에서 개체의 인터페이스에 직접 액세스하여 아파트 간 호출 속도를 높일 수 있습니다. 이 옵션은 양쪽 스레딩 모델을 사용하는 클래스를 위한 것입니다.
이 옵션을 사용하는 경우 클래스는 데이터의 스레드 보안을 담당해야 합니다. 또한 자유 스레드 마샬러를 집계하고 다른 개체에서 가져온 인터페이스 포인터를 사용해야 하는 개체는 인터페이스가 올바르게 마샬링되도록 추가 단계를 수행해야 합니다. 일반적으로 여기에는 인터페이스 포인터를 GIT(전역 인터페이스 테이블)에 저장하고 사용될 때마다 GIT에서 포인터를 가져오는 작업이 포함됩니다. ATL은 GIT에 저장된 인터페이스 포인터를 사용할 수 있도록 CComGITPtr 클래스를 제공합니다.
참고 항목
개념
CoCreateFreeThreadedMarshaler
IMarshal
전역 인터페이스 테이블을 사용하는 경우
In-Process 서버 스레딩 문제