上一篇:WTL体系结构(4) >>
深入DCOM之MTA
运行再MTA中的线程不需要Windows消息机制,因为COM直接通过对象的v-table来调用对象的接口,所以在MTA中的COM对象没有同步机制,需要自己通过临界区、事件等机制来实现同步,COM对象的接口指针也可以直接在MTA的线程之间传递。
组件通过调用CoInitializeEx(NULL, COINIT_MULTITHREADED)来声明支持MTA,客户端代码调用CoInitializeEx(NULL, COINIT_MULTITHREADED)创建MTA,一个进程中最多只能创建一个MTA,所以第一个调用CoInitializeEx的线程创建一个MTA,之后再调用CoInitializeEx的线程则加入该MTA。
客户端和组件之间一共有八种线程模式组合,进程内的四种是:STA-STA,STA-MTA,MTA-STA,MTA-MTA,同样进程外有四种。如何选择线程模式呢,基本的规则是与用户交互的组件应该使用STA,每个显示窗口的应用已经有一个消息循环了,STA自然就很适合。没有用户界面的组件最好使用MTA,因为MTA模式比STA更快,因为不需要同步,而且MTA到MTA的调用不需要marshal接口,而STA到STA或者MTA到STA的调用需要marshal接口。下一篇:调试Release版本应用程序 >>
相关文章:
- · 数据结构学习(C++)——递归【2】(1)
- · 数据结构学习(C++)——递归【2】(2)
- · 数据结构学习(C++)——递归【2】(3)
- · 数据结构学习(C++)——递归【2】(4)
- · 关于异常的使用心得
- · 在VC中调用DirectShow全屏播放视频
- · 3D图形渲染通道负载优化的几种方法
- · 数据结构学习(C++)——递归【3】(1)
- · 旧爱如梦 (harrymeng旧书推荐)
- · ESMTP身份验证机制探索手记
- · 数据结构学习(C++)——递归【3】(2)
- · “扫雷”游戏的幕后
- · vc dll编程
- · Visual C++ 6.0的文档/视结构
- · VC增加自定义消息
- · 和GUI有关的各种对象
- · 文档 视图 框架窗口间的关系和消息传送规律
- · 线程
- · 特权提升
- · “瑜珈山夜话” ---- 闲谈“封装与抽象”
- · 用DEF文件从DLL中导出C++类
- · “瑜珈山夜话”--- 寻根究底谈“继承”(一)
- · 软件解密技术研究
- · “瑜珈山夜话”--- 参考资料
- · 写扫雷的一点感想(初学的朋友可以看看)
- · 运用VC或Java对Office进行编程操作
- · 可以动态读入系统所支持的数据库
- · 向你的程序中添加多语言支持
- · 计算24点
- · DSP应用实例(一)--轻松实现BT多点下载
- · DirectShow应用程序设计介绍(翻译)
- · 一个俄罗斯方块游戏源程序
- · 数据结构学习(C++)——二叉树【1】
- · 闲侃名家名作
- · 在编程中调用OLEDB的数据连接属性对话框
- · JIURL玩玩Win2k内存篇 Page Frame Number Database
- · JIURL玩玩Win2k内存篇 LookasideList
- · JIURL玩玩Win2k内存篇 内存共享(一) ProtoPTE
