什么情况下需要通过COINIT_MULTITHREADED进入MTA?
2008-01-24 11:56
429 查看
对于STA组件,无论客户端是什么方式初始化,它总是创建在STA中;
对于Free组件,无论客户端是什么方式初始化,它总是创建在MTA中;
对于both组件,如果客户端以STA初始化,它创建在STA中,如果客户端以MTA初始化,它创建在MTA中。
只要创建在MTA中的组件,都能跨线程直接访问而无需列集。
那什么情况下需要通过COINIT_MULTITHREADED进入MTA?
只有当需要创建的组件既有APPARTMENT类的,也有FREE类的时候,
才需要COINIT_MULTITHREADED进入MTA。
这样既可以另其套间存放创建APPARTMENT类组件,也可以在本MTA中存放FREE套间。
这样,既保护了APARTMNET类组件的多线程访问,也实现了FREE类组件的效率问题。
两全其美!
对于Free组件,无论客户端是什么方式初始化,它总是创建在MTA中;
对于both组件,如果客户端以STA初始化,它创建在STA中,如果客户端以MTA初始化,它创建在MTA中。
只要创建在MTA中的组件,都能跨线程直接访问而无需列集。
那什么情况下需要通过COINIT_MULTITHREADED进入MTA?
只有当需要创建的组件既有APPARTMENT类的,也有FREE类的时候,
才需要COINIT_MULTITHREADED进入MTA。
这样既可以另其套间存放创建APPARTMENT类组件,也可以在本MTA中存放FREE套间。
这样,既保护了APARTMNET类组件的多线程访问,也实现了FREE类组件的效率问题。
两全其美!
相关文章推荐
- 为虚函数,什么情况下需要将析构函数定义为虚函数?
- 什么情况需要 if (log.isDebugEnabled()) {}
- 什么情况下需要使能AFIO的时钟呢?
- 通常情况下你想通过函数参数获取一段动态分配的内存时需要用到
- Spring Aop开发过程中可能出现的异常(通过这些异常可以知道需要什么Jar包)
- 什么情况下需要使用的稳压器?
- 什么情况下需要加extern "C",通俗易懂
- 多线程编程中什么情况下需要加 volatile?
- (转)在.NET程序运行过程中,什么是堆,什么是栈?什么情况下会在堆(栈)上分配数据?它们有性能上的区别吗?“结构”对象可能分配在堆上吗?什么情况下会发生,有什么需要注意的吗?
- Linux进入目录、创建文件、显示文件分别需要什么权限?
- 终于知道什么情况下需要实现.NET Core中的IOptions接口
- 进入某个目录需要什么权限
- 学习笔记-JAVA-考点10-什么情况下需要重写equals和hashcode()两个方法?
- 企业在什么情况需要部署CRM系统?
- haslayout 以及怎样触发haslayout? 在什么情况下需要触发haslayout
- Python入门:自定义类中的方法被调用的时候,什么情况下需要传入self,什么时候不需要
- 什么情况下,需要做血液透析?
- 什么情况下析构函数需要定义为虚函数?
- 数据库操作的时候,什么情况下需要用到事务?
- 什么情况下需要创建MySQL索引?