分享
 
 
 

com之套间(Apartment)

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

com之套间

参考资料:《Essential COM》、《MSDN》

什么是套间

套间(Apartment),形象点,他就是一个用来装com对象的容器,一个套间内可以有多个Com对象,但是对于每个com对象在某一时刻只能够属于某一个套间。

套间用途和存在意义

假设你使用过Com。我们在一个线程A里创建了一个COM对象,那么在线程A里我们就可以访问该COM对象的方法、属性。如果此时我们有另外一个线程B他想要访问线程A里创建的Com对象的方法和属性,怎么办?按照习惯我们就不得不重新改变我们的线程策略,如把Com对象作为全局;或则是定义一个Com对象的全局指针,在线程A创建以后给她付值,再在创建线程B时把这个指针传过去,而且你还要进行一些同步操作,以确保在线程B对线程A创建的COM对象调用期间,该对象有效(没有删掉)。 看到了吗,我们只是想让B访问A的Com对象而已,但是要做的工作却是如此让人烦躁。 为了让我们能够很方便的使用他人提供的对象,而无需重新改动我们的线程策略。Com提供了套间(Apartment)这个概念,它把对象的并发行限制作为另一个实现细节,解除了客户与Com对象的并发性和重入限制之间的关联,建立起了Com对象与进程和线程之间相互关系的模型,从而使我们能够透明的使用一个对象,而不用关心她是否感知线程。

套间既不是进程,也不是线程。她和进程和线程之间的关联尊崇以下几个原则:

1. 每个使用Com的进程都有一个或多个套间;

2. 一个套间只能包含在某一个进程中;

3. 每个套间可以拥有一个(STA)或多个(MTA)线程;

4. 一个线程只在某一个套间中执行;

5. 每个套间可以包含多个对象。

com规定,只有运行在对象的套间中的线程才能够访问该对象。

套间详解

目前Com规范中定义了两种类型的套间:多线程套间(MTA,Multithreaded Apartment)和单线程套间(STA, Singlethreaded apartment).

从套间的分类看,一个进程的存在以下几种可能类型:

a. 仅仅包含一个STA(a single-threaded process);

b. 包含两个或多个STA(an apartment model process);

c. 包含一个MTA(a free-threaded process);

d. 包含一个MTA,不定数目的STA (mixed model process);

STA套间

原则:

a. 一个进程可以包含多个STA;

b. 每个STA中有且只有一个线程执行;

以上原则决定,驻留在STA中的对象永远也不能被多个线程并发访问,而且只有一个特定的线程可以执行对象的方法。

MTA套间

原则:

a. 一个进程只能包含一个MTA;

b. 每个MTA中可以有多个线程执行;

以上原则决定,驻留在MTA中对象能够被多个线程并发访问,这在某些情况下可以提供程序的效率(如文章开头所举例子),但是作为实现者,你必须处理好线程之间的同步关系。

<待续……..>

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有