》》》线程模型Single和Apartment有什么区别??

RickeyLau 2003-06-23 10:09:31
多谢!!!
...全文
354 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ldsjlzy 2003-06-24
  • 打赏
  • 举报
回复
不会吧,这种实验己经做过几万遍了。
Single模式和单个Apartment模式对客户端的请求都是排队的。
你可以写个COM方法:方法下就写一行代码:Sleep(6000),
再用vb或delphi做个客户端调用该方法并messagebox一下。
看看结果。显然都是排队返回的.
ldsjlzy 2003-06-23
  • 打赏
  • 举报
回复
前者为客户请求提供一个线程,客户请求要排队,后者可提供多个线程即多个Apartment服务客户请求,不过一个Apartment只能一个线程,如果服务端只有一个Apartment则与Single一样。在一个Apartment内可有多个客户请求,只是要排队处理。如果的服务端由多个Apartment
处理多个客户请求,则可同步处理客户请求。但Apartment是一群需要作同步控制的COM对象的
集合(李维语).
RickeyLau 2003-06-23
  • 打赏
  • 举报
回复
如果用在现在的多任务操作系统中会是怎样的情况呢??
我刚才做了一个测试,一个线程创建一个线程模型为Single的组件,并调用它的WaitOneMinute函数(Sleep(60000)),紧接着用另外一个线程也去创建这个组件的实例,可以马上返回,这说明在现在的多任务操作系统中多用户请求不会排队,也就是说和Apartmeng是一样啦???
ldsjlzy 2003-06-23
  • 打赏
  • 举报
回复
你应该先把目光停在服务端,客户端用户请求的是服务端com对象提供的接口。
Single:表示服务端只提供一个线程来响应客户端的请求,多个用户请求要
排队人,这种服务模式只在以前单任务操作系统下使用。
Apartment:暂且把它想象成服务端的一个进程(套间进程),在这个进程下存在很多的com
对象实例供客户端调用。但这个进程只有一个线程,所以所有请求该Apartment
下COM对象的客户都需要排队调用,如果服务端只有一个Apartment,则与Single
模式无异(效率上讲)。但服务端是允许多个Apartment存在的。
不同的Apartment之内可以有相同的COM对象。这样同一COM对象可存在于多个Apartment
中了,就是人们常说的COM组件在同一时刻允许两个线程(两个Apartment内的线程)访问。
如果你要得到容易理解但是错误的答案:那就是:
Single:提供一个线程响应客户请求(com对象)
Apartment:提供多个线程响应客户请求。

RickeyLau 2003-06-23
  • 打赏
  • 举报
回复
Single:表示COM组件在一个时刻只允许一个线程访问; =>
是指只允许一个线程访问组件的同一一个实例还是指其它的??
xiaohedou 2003-06-23
  • 打赏
  • 举报
回复
Single:表示COM组件在一个时刻只允许一个线程访问;
Apartment:表示COM组件在同一时刻允许两个以上的线程访问。
就象一间屋子可以同时有多个人同时进入一样.Apartment意思是公寓,那么就有可能多人拥有此房间的钥匙。
RickeyLau 2003-06-23
  • 打赏
  • 举报
回复
对呀,最好用自己的话来说。
看李维的这段话也不是很明白呀
li_zuo_min 2003-06-23
  • 打赏
  • 举报
回复
还是说得不清楚。最好能加上自己的理解。

3,248

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧