Inside COM读书笔记-----多线程

1.      COM线程模型


COM并没有定义新的线程和进程模型,而是直接使用Win32线程。


1.1Win32线程


         典型的Win32线程具有两种不同类型的线程:用户界面线程和工作线程。用户线程是同一个或多个窗口关联着的。这些线程具有自己的消息循环,工作线程用于后台处理。一个进程可以具有多个用户界面线程和多个工作线程。

         每一个用户界面线程都有一个或多个窗口,线程将调用他所拥有的窗口的窗口过程,对于任一窗口他将被创建他的线程拥有。


1.2COM线程


COM用地线程的类型与Win32的两种线程是相同的,只不过换了不同的名称。与Win32中的用户界面线程想对应COM有一个“套间线程”,而与工作线程相对应的则是一个自由线程。


1.3套间


“套间”是一个由用户界面风格的线程和一个消息循环工程的概念性实体。

12-2中表示是由一个客户和两个线程中组件工程的典型COM应用程序。这个程序将驻留在只有一个执行线程的进程中。进程中组件没有自己的消息循环。而是共享EXE客户的消息循环。

  • 加入进程外组件

当客户连接到进程外组件时,组件同客户在不同的进程中运行,每个进程都有自己的执行线程。进程外服务器有它自己的消息循环。同使用进程中组件进程的另一个差别在于跨越进程边界的函数调用的参数必须被调整。


下图将是进程外组件在另外一个套间的进程中组件。

套间同单线程进程在如下方面是类似的:每一个进程都有它自己的消息循环,一个套间也可以有它自己的消息循环,同一进程中的函数调用和同一套间中的函数调用将不被调整。由于进程和套间只是一个执行线程。因此消息的同步是由保证的。


1.4套间线程


一个套间线程值的时套间中仅有的唯一线程。套间线程将拥有他所创建的组件,一个套间中的组件只能由相应的套间线程调用。假定另一个线程调用一个套间中某个组件的方法。COM将把此调用请求方到套间的队列中,消息循环将取出此调用请求并在套间线程上执行相应的方法。


1.5自由线程


COM将在套间线程中同步对组件的调用。对于自由线程创建的组件的调用,COM不能使之同步,若某个组件时有自由线程创建的,则任意线程均可在任意时候调用它。


1.6调整与同步

  • 进程间的调用将被调整
  • 同一线程中的调用将不被调整
  • 对于自由线程中组件的调用并不是总被调整
  • 对于调节线程的调用将被同步
  • 同一线程中的调用将由此线程本身完成同步

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

iot-genius

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值