INFO:OLE 线程模型的说明和工作方式
来源:互联网 发布:javascript编程视频 编辑:程序博客网 时间:2024/06/05 04:36
转载地址:http://support.microsoft.com/kb/q150777/
COM 对象可以用于一个进程的多线程。“单线程单元” (STA) 和“多线程单元” (MTA) 术语用于为描述对象与线程间的关系、对象间的并行关系、使用何种方法将调用传递给对象的方式以及在线程间传递接口指针的规则而建立的概念框架。组件及其客户可以在 COM 目前支持的以下两个单元模型之间进行选择:
- 单线程单元模型 (STA):进程中一个或多个线程使用 COM ,并且 COM 对象的调用由 COM 进行同步。在线程间对接口进行编组。单线程单元模型的退化情况(其中,在给定的进程中只有一个线程使用 COM)被称为单线程模型。以前的 Microsoft 信息与文档曾经将 STA 模型简单地称为“单元模型”。
- 多线程单元模型 (MTA):一个或多个线程使用 COM,并且由所有与 MTA 有关的线程直接调用与 MTA 有关的 COM 对象,而在调用者和对象间没有系统代码的插入。由于多个同步客户可能将或多或少地同时调用对象(同时在多个处理器系统上),所以对象必须自己同步其内部状态。在线程间没有接口编组。以前的 Microsoft 信息与文档曾经将此模型称为“自由线程模型”。
- STA 模型和 MTA 模型均可以用于同一进程。有时这种模型被称为“混合模型”的进程。
回到顶端
更多信息
下表总结了客户线程在作为进程内服务器实现的类上第一次调用 CoGetClassObject 时,不同线程模型之间的相互作用。
客户/线程的类型:
- 客户在一个与“主”STA 相关的线程(用 COINIT_APARTMENTTHREADED 标记调用 CoInitialize 或 CoInitializeEx 的第一个线程)中运行 — 这称为 STA0 (也称为单线程模型)。
- 客户在一个与任何其它 STA [ASCII 150] 相关的线程中运行,称为 STA*。
- 客户在一个与相关 MTA 的线程中运行。
- 服务器没有 ThreadingModel 项 — 称为“无”。
- 服务器标为“单元” — 称为“单元”。
- 服务器标为“自由”。
- 服务器标为“两者”。
客户 服务器 结果------ ------ -----------------------------------------STA0 无 直接访问; 服务器加载到 STA0STA* 无 代理访问; 服务器加载到 STA0。 MTA 无 代理访问; 服务器加载到 STA0; 如有必要,STA0 由 COM 自动创建;STA0 单元 直接访问; 服务器加载到 STA0STA* 单元 直接访问; 服务器加载到 STA*MTA 单元 代理访问; 服务器加载到一个由 COM 自动创建的 STA。STA0 自由 代理访问; 服务器加载到 MTA 如果必要 MTA 由 COM 自动创建。STA* 自由 与 STA0->自由相同MTA 自由 直接访问STA0 两者 直接访问; 服务器加载到 STA0STA* 两者 直接访问; 服务器加载到 STA*MTA 两者 直接访问; 服务器加载到 MTA
- INFO:OLE 线程模型的说明和工作方式
- OLE 线程模型的说明和工作方式
- OLE及.net的线程模型
- 对话框和工作线程同步工作的标准模型
- Com线程模型及工作方式
- WEB-INFO和META-INFO作用说明
- nginx的进程模型工作方式
- 工作的方式和方法
- java虚拟机内存模型的目的和线程获取变量值的方式
- 通过一个有趣的例子说明线程的工作机制
- Android单线程模型说明
- 关于单线程epoll模型服务器的一点说明
- Android<进程和线程在Android中的工作方式>
- Android中进程和线程在Android中的工作方式
- 进程和线程在Android中的工作方式
- 内存泄漏和使用工作线程常见方式总结
- 进程和线程在Android中的工作方式
- 数据库连接的Persist Security Info参数说明
- 今天向大家推荐linux老鸟博客
- 管道重定向与进程间通信
- java读取和写入Excel文件
- ASP.NET MVC 2示例Tailspin Travel UI层分析
- 线程池QueueUserWorkItem
- INFO:OLE 线程模型的说明和工作方式
- 报表和数据仓库运算
- OpenCV.org.cn上关于粒子滤波器的一个讨论帖
- PKU I Wanna Go Home 3767 Dijsktra 优先队列 + BFS
- 栈内存管理
- Tweenlite 缓动引擎的onComplete事件
- (转)undefined reference to 'pthread_create'问题
- Hibernate学习手记(2)--单向一对多映射
- mutable