后一修订版 | 前一修订版 |
public:it:com [2014/09/19 11:45] – 创建 oakfire | public:it:com [2020/11/20 12:36] (当前版本) – oakfire |
---|
| |
* [[http://msdn.microsoft.com/en-us/library/ms680573%28v=VS.85%29.aspx|Component Object Model (COM)]] | * [[http://msdn.microsoft.com/en-us/library/ms680573%28v=VS.85%29.aspx|Component Object Model (COM)]] |
* 关于STA与MTA, 有个形象的描述:<WRAP center round box 80%> | * win桌面程序, 窗口嵌入IE控件, 必须使用STA才能让窗口有效控制控件. 关于STA与MTA, 有个形象的描述:<WRAP center round box 80%> |
进程相对于一个小城镇, | * 进程相当于一个小城镇, |
线程相当于这个城镇里的居民, | * 线程相当于这个城镇里的居民, |
STA(单线程套间)相当于居民房,是私有的, | * STA(单线程套间)相当于居民房,是私有的, |
MTA(多线程套间)相当于旅馆,是公用的, | * MTA(多线程套间)相当于旅馆,是公用的, |
Com对象相当于居民房或旅馆里的物品. | * Com对象相当于居民房或旅馆里的物品. |
接下去就好理解了,一个小城镇(进程)里可以有很多很多的(居民)线程, | * 接下去就好理解了,一个小城镇(进程)里可以有很多很多的(居民)线程, |
这个城镇(进程)只有一间旅馆(MTA),但可以有很多很多的居民房(STA). | * 这个城镇(进程)只有一间旅馆(MTA),但可以有很多很多的居民房(STA). |
只有居民(线程)进入了房间(居民房或旅馆,STA或MTA)以后才能使用该房间里的物品(COM对象), | * 只有居民(线程)进入了房间(居民房或旅馆,STA或MTA)以后才能使用该房间里的物品(COM对象), |
居民房(STA)里的物品(COM对象)只能供这间房子的主人(创建该STA的线程)使用,其它居民(线程)不能访问. | * 居民房(STA)里的物品(COM对象)只能供这间房子的主人(创建该STA的线程)使用,其它居民(线程)不能访问. |
同样,只有入住到旅馆(MTA)里的居民(线程,可以有多个)才可以访问到旅馆(MTA)里的物品(com对象), | * 同样,只有入住到旅馆(MTA)里的居民(线程,可以有多个)才可以访问到旅馆(MTA)里的物品(com对象), |
但因为是公用的,所以要合理的分配(同步)才能不会产生混乱. | * 但因为是公用的,所以要合理的分配(同步)才能不会产生混乱. |
</WRAP> | </WRAP> |
| |
| |