社区
ATL
帖子详情
是不是所有的COM 组件都运行在线程里吗?
xiaohedou
2003-08-05 03:58:55
如题!我看到的<COM本质论>讲理论不用线程,单VC生成时默认就有一个线程模式(signle)。MTS的组件选择哪个线程模式哪?signle,apartmet,both?谁能具体讲讲!
...全文
55
7
打赏
收藏
是不是所有的COM 组件都运行在线程里吗?
如题!我看到的讲理论不用线程,单VC生成时默认就有一个线程模式(signle)。MTS的组件选择哪个线程模式哪?signle,apartmet,both?谁能具体讲讲!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
7 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaohedou
2003-08-18
打赏
举报
回复
非常感谢 zzyx(菜农)及大家 的关注!这个问题已经比较长时间了。大家的建议使我有很大收获,谢谢!
zzyx
2003-08-18
打赏
举报
回复
俺认为准确地说
COM也是一段代码,他肯定是运行在一个线程中的,毫无例外
这根本不用特别说明。
但COM的规范指定了所有的COM 组件都运行在公寓(APARTMENT)里。
我想你把线程模型-公寓(也有叫套间)和线程混淆了
从线程的角度看,COM可能和客户端运行在同一个线程中
也可能运行在COM环境提供的另外的一个线程中
从线程模型的角度看,COM肯定运行在某一个公寓中
COM环境为不同的公寓模型提供了不同的线程同步机制
CoInitialize不是启动一个线程,而是启动一个公寓,
让以后创建的COM对象有一个可用的公寓
COM环境在实际工作的时候,可能会根据实际情况,把你的COM对象放到某类公寓中
俺觉得,书上写的线程模型部分都比较凌乱,需要自己去体会
要想理解这个东东,需要区别出好几个概念
COM组件指定的线程模型,以及表现
客户端的指定的线程模型
注册表指定的线程模型
C/S间实际运行的关系
公寓间的调用与线程间的调度关系
……遗憾的是,俺没有看到哪本书写得非常清晰
……当然,俺看书从来也不认真,理解能力也差,所以到现在为止,俺也不太明白
只是随便说说而已
至于MTA,STA,Free,Both之类的,还是看书吧,仔细体会吧
至于开发COM的工具,俺觉得
VC的ATL最强大,也最灵活,出来的东西也非常精致,
但太复杂,难掌握,需要理解的概念太多
俺用Delphi和VB也做过COM,相对来说,Delphi做COM非常方便容易,
如果模型不复杂,实在是太简单了,只是比ATL要臃肿得多。
……没有用delphi做过复杂的COM应用,不知道会怎么样。但如果只是要进行简单的
代码封装,那么delphi非常好
VB就更是臃肿了,还需要一个运行库支持呢。
brave_heart
2003-08-08
打赏
举报
回复
> 是不是所有的COM 组件都运行在线程里吗?
是的,确切来讲,所有的COM 组件都运行在套间(APARTMENT)里。
xiaohedou
2003-08-07
打赏
举报
回复
up!
难道没人能答吗?
nonocast
2003-08-07
打赏
举报
回复
你的问题很...
是不是所有的COM 组件都运行在线程里吗?
你说什么程序代码不是在线程里运行的?!
如果不在线程里,那请问在哪运行?
zzyx
2003-08-07
打赏
举报
回复
想验证这个问题,给你个建议自己试验一下就知道了
创建一个com,做一个接口函数,如Test
Test()
{
AtlTrace("Current ThreadId:%d",GetCurrentThreadId());
...
}
客户端
main()
{
printf("\nMainThread ID:%d",GetCurrentThreadId());
...
yourcom.Test();
}
xiaohedou
2003-08-05
打赏
举报
回复
我用VC60+win2000+ATL3.0+visual assistant6
《Android系统源代码情景分析》
7.4 子Activity
组件
在新进程中的启动过程 第8章 Service
组件
的启动过程 8.1 Service
组件
应用实例 8.2 Service
组件
在新进程中的启动过程 8.3 Service
组件
在进程内的绑定过程 第9章 Android系统广播机制 ...
Android开发 四大
组件
是否
运行
在主
线程
中?
Android的四大
组件
是不是
运行
在主
线程
中?打了log,做个笔记. 先上图: 图没有说服力,因为log是我写的.哈哈. 1.activity 在onCreate()
里
面打印当前的
线程
的id和name @Override protected void onCreate(Bundle...
Spring Boot+Vue全栈+分布式
组件
训练营,案例可供毕业设计
本视频教材配套教材在清华大学出版,全程案例讲解,代码均可
运行
,内容经正规出版社审核确认。 本视频两大案例,均可做毕业设计素材。 分布式
组件
的难点在于搭建环境,本视频教材全程给出各分布式
组件
环境的搭建过程...
【Android】Service几个重要的方法
运行
在哪个
线程
一、前言 Service是Android中的四大... 当使用bindService后,ServiceConnection的回调方法onServiceConnected和onServiceDisconnected方法又是
运行
在哪个
线程
的?是主
线程
还是子
线程
? 针对上面的两个问题,本文从And
多
线程
调用
com
组件
的体会 转
调用任何
COM
组件
之前,你必须首先初始化
COM
套件环境,即调用...
COM
套件只指
COM
组件
运行
时的环境,其中包括
COM
组件
的数据、变量、
线程
调度方式。 <br />
COM
套件分为两种模式,单
线程
套件(STA)和多
ATL
3,245
社区成员
48,539
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章