ATL 和自由线程封送拆收器

ATL 简单对象向导的“属性”页提供允许类聚合自由线程封送处理程序 (FTM) 的选项。

该向导生成代码以在 FinalConstruct 中创建自由线程封送处理程序的实例,并在 FinalRelease 中释放该实例。 COM_INTERFACE_ENTRY_AGGREGATE 宏会自动添加到 COM 映射,以确保自由线程封送处理 IMarshalQueryInterface 请求。

自由线程封送处理程序允许从同一进程中的任何线程直接访问对象上的接口,从而加快跨单元调用的速度。 此选项适用于使用这两个线程模型的类。

使用此选项时,类必须负责其数据的线程安全。 此外,聚合自由线程封送处理程序且需要使用从其他对象获取的接口指针的对象必须执行额外的步骤,以确保正确封送接口。 通常,这涉及到将接口指针存储在全局接口表 (GIT) 中 ,并在每次使用时从 GIT 获取指针。 ATL 提供 CComGITPtr 类,帮助使用存储在 GIT 中的接口指针。

另请参阅

概念
CoCreateFreeThreadedMarshaler
IMarshal
何时使用全局接口表
进程内服务器线程问题