19、COM 组件并发管理与接口封送处理详解

COM 组件并发管理与接口封送处理详解

1. 单元与标准封送处理

1.1 跨单元访问与线程切换

跨单元访问 STA 或 MTA 对象时需要进行线程切换。当客户端和对象处于不同单元时,客户端会获得对象的代理。具体来说,客户端会得到一个代理管理器,为对象上查询的每个接口加载一个接口代理。当在接口代理上进行方法调用时,接口代理将参数信息封送到 ORPC 消息中,并通过 ORPC 通道将其发送到接口存根。接口存根接收 ORPC 消息,对其进行解封处理,并在对象上调用相应的接口方法。

1.2 ORPC 通道的传输协议

COM 在 ORPC 通道通信时,会根据导入(客户端)和导出(对象)单元的类型使用最有效的传输协议:
| 导入单元位置 | 传输协议 | 说明 |
| — | — | — |
| 不同主机 | RPC | 在导出单元的进程中启动一个 RPC 线程缓存,该缓存等待传入的连接请求。当请求到来时,会调度一个线程来处理请求,处理完成后线程返回缓存。 |
| 同一主机不同进程 | 轻量级 RPC (LRPC) | 是 RPC 的微软专有变体,具有与 DEC RPC 运行时相同的调用语法,但经过优化以减少数据复制并完全消除对网络代码的访问。 |
| 同一进程 | 直接使用调用者线程 | 可以绕过 RPC 线程缓存,直接使用调用者的线程来处理请求。 |

1.3 调用分发到 STA

  • 不同主机的调用 :如果传入的调用来自不同主机,必须使用 RPC 线程缓存中的线程进行分发。但 STA 有自己的线程,其他线程不能进入现有的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值