com接口函数设计的简单问题! com 组件必须实现的一个接口叫做 IUnknown (最小接口),这个接口有三个方法叫做 AddRef, Release, QueryInterface第一个方法,当生成或者拷贝一个com组件时,这个组件会调用 AddRef,使自己的引用数加一第二个方法,反之,减一。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 如果有多个进程同时调用一个com组件,则每一个com都是一个实例。所以,多进程访问不用考虑的,要考虑的是,多线程的并发访问问题啊. 如果我用ATL编写的话,是不是就不必考虑AddRef和Release这两个方法了,ATL是不是自己就完成了这个工作!? 从一开始COM就考虑到这个问题,所以会有addref()和release()两个方法来控制引用计数从而决定com的生存期,其实应该有三层引用计数,第一层是组件级,第二层是对象级,第三层是接口级,接口集最为复杂,因为调用频率最高,一般com采用前两层引用计数控制只有当他们的引用计数都为0时才可以被卸载,如果是Dll则只是对一个引出函数返回值置位,告诉COM库让COM库在空闲时来完成对dll的卸载,如果是EXE只要delete this就可以了所以他没有CanUnloadNow()引出函数 to yangfanfan:我对你所说的三层引用计数不是很明白,比如我调用一个DLL,它的组件级,对象级和接口级分别对应什么引用? 多进程访问COM是个模糊的问题, COM server 是被三个进程创建的还是一个创建另外两个进程得到经过marshal的interface pointer, 他们是不同的。与COM server, client的线程模型都有关系 急!如何将单选按钮的背景色变成透明的? CString的Format 关于从AVI中分离音频和视频的问题!!! 如何让LISTVIEW在单击滚动条的右面的三角时向右滚动一列? 请问,我在一个文件中声明了一个全局变量,怎么在其它文件中使用? 系统问题,UP有分,急 一个内存泄露的问题,欢迎来讨论来者有分 cnhu, 请进来领分!!!!!!!11 如何实现光盘自动启动???大虾们请赐教? [在线等!]怎么获取Excel2003单元格的值? 请问如何通过IP地址连接ACCESS数据库. CString 和char*型变量的转换问题!
如果有多个进程同时调用一个com组件,则每一个com都是一个实例。
所以,多进程访问不用考虑的,
要考虑的是,多线程的并发访问问题啊.
接口集最为复杂,因为调用频率最高,一般com采用前两层引用计数控制只有当他们的引用计数都为0时才可以被卸载,如果是Dll则只是对一个引出函数返回值置位,告诉COM库让COM库在空闲时来完成对dll的卸载,如果是EXE只要delete this就可以了所以他没有CanUnloadNow()引出函数
多进程访问COM是个模糊的问题, COM server 是被三个进程创建的还是一个创建另外
两个进程得到经过marshal的interface pointer, 他们是不同的。
与COM server, client的线程模型都有关系