社区
ATL
帖子详情
COM和线程的问题
突击召唤师
2004-11-12 03:40:08
一个COM中调用了一个API,这个API会创建线程。在一个普通应用程序中调用这个API没有任何问题,可以正常运行和退出。可是在COM中调用时,当调用COM的程序退出,API的线程没有终止,应用程序的进程也就一直存在。请问这种情况可能是什么原因造成的呢?谢谢!
...全文
258
19
打赏
收藏
COM和线程的问题
一个COM中调用了一个API,这个API会创建线程。在一个普通应用程序中调用这个API没有任何问题,可以正常运行和退出。可是在COM中调用时,当调用COM的程序退出,API的线程没有终止,应用程序的进程也就一直存在。请问这种情况可能是什么原因造成的呢?谢谢!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
19 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yszmax
2004-11-16
打赏
举报
回复
学习
hjunxu
2004-11-16
打赏
举报
回复
学习,学习
hjunxu
2004-11-16
打赏
举报
回复
是不是因为这个线程是启动在系统服务中,而不是在你自己的进程空间中的呢?
或者还要调用一个什么API去结束它呢?
XXandOO
2004-11-16
打赏
举报
回复
COM组件实例使用时,所有导出接口指针都会导致引用计数的增加,接口指针使用完了一定要记得调用release,只要计数正确,不会有这样的问题,有两种可能:
1、接口指针没释放。
2、有别的线程在共享COM组件实例。
突击召唤师
2004-11-16
打赏
举报
回复
问题是,我的COM没有暴露被调用的API,也需要列集?
toxyboy
2004-11-15
打赏
举报
回复
个人比较倾向星最多的那个老兄的说法,曾经在window服务器里面开启监听服务,启动线程,一般的程序就很好用,但是到了windows服务程序下面就会莫明的死掉,怀疑也是消息机制的控制问题。
dreamy
2004-11-15
打赏
举报
回复
Mark.
allenq
2004-11-15
打赏
举报
回复
gz
突击召唤师
2004-11-15
打赏
举报
回复
微软专家陪我们干了两个通宵,也没搞定。问题大了。 -__-
我们是用COM包装API,API中启动了监视线程。我们不知道这个监视线程如何退出。对于普通应用程序来说明,退出的时候是不管有没有线程在运行的,泄漏就泄漏了。可是不知道为什么,COM里有没结束的线程,整个进程就无法退出。
蒋晟
2004-11-13
打赏
举报
回复
一般来说,你需要一个消息循环来列集COM操作。也就是说,如果消息循环终止,那么后续的COM操作可能失败。你应该在消息循环终止前确保释放了所有COM对象。
Kudeet
2004-11-12
打赏
举报
回复
ptr->Release();是不是被锁了呢
突击召唤师
2004-11-12
打赏
举报
回复
红星闪闪啊,闪阿闪阿
我的问题怎么就这么难啊,难啊难啊
突击召唤师
2004-11-12
打赏
举报
回复
线程是API里面的,COM管不了,测试程序更管不了。而且,直接用测试程序调用API就没问题
ukyoking
2004-11-12
打赏
举报
回复
释放之前有没有销毁线程
突击召唤师
2004-11-12
打赏
举报
回复
ptr->Release();
好像已经释放了 -__-
ukyoking
2004-11-12
打赏
举报
回复
你忘记释放组件了
kingzai
2004-11-12
打赏
举报
回复
这种问题我有遇到过。
因为COM的窗口和消息机制与MFC下是不一样的,在COM下,你要特别注意内存指针的释放问题。注意线程中资源要及时清除
突击召唤师
2004-11-12
打赏
举报
回复
疑惑,通过COM调用和直接调用有什么区别呢
xenke
2004-11-12
打赏
举报
回复
可能api创建的线程接管了消息循环.只要主线程退出了,进程绝对会消亡.你具体的分析一下API创建的线程干了些什么
Java多
线程
超详解
引言 随着计算机的配置越来越高,我们需要将进程进一步优化,细分为
线程
,充分提高图形化界面的多
线程
的开发。这就要求对
线程
的掌握很彻底。 那么话不多说,今天本帅将记录自己
线程
的学习。
线程
的相关API //获取当前
线程
的名字 Thread.currentThread().getName() 1.start():1.启动当前
线程
2.调用
线程
中的run方法 2.run():通常需要重写Thread类中的此...
进程和
线程
的区别
转自文章进程和
线程
的区别 1、根本区别 进程和
线程
的根本区别是进程是操作系统资源(OS)分配的基本单位,而
线程
是处理器(CPU)任务调度和执行的基本单位。 2、资源开销: 每个进程都有独立的代码和数据空间(程序上下文),程序之间的切换会有较大的开销;
线程
可以看做轻量级的进程,同一类
线程
共享代码和数据空间,每个
线程
都有自己独立的运行栈和程序计数器(PC),
线程
之间切换的开销小。 3、包含关系: 如果一个进程内有多个
线程
,则执行过程不是一条线的,而是多条线 同完成的;
线程
是进程的一部分,所行过程不愿一条绿的,而
多
线程
并发可能遇到的
问题
及Runable和Thread之间的关系
一、多
线程
并发可能遇到的
问题
多
线程
并发执行可能会导致一些
问题
: 安全性
问题
:在单
线程
系统上正常运行的代码,在多
线程
环境中可能会出现意料之外的结果。 活跃性
问题
:不正确的加锁、解锁方式可能会导致死锁或者活锁
问题
。 性能
问题
:多
线程
并发即多个
线程
切换运行,
线程
切换会有一定的消耗并且不正确的加锁。 1. 安全性
问题
多
线程
的三大特性:原子性、可见性、有序性。如果不满足这三大特性,就可能产生
线程
安全
问题
。 案例:需求现有100张火车票,两个窗口同时售卖火车票,请用多
线程
模拟抢票效果。 class Thread
面试必问!多
线程
并发
问题
多
线程
并发
问题
,基本是面试必问的。 大部分同学应该都知道Synchronized,Lock,部分同学能说到volatile、并发包,优秀的同学则能在前面的基础上,说出Synchronized、volatile的原理,以及并发包中常用的数据结构,例如ConcurrentHashMap的原理。 这篇文章将总结多
线程
并发的各种处理方式,希望对大家有所帮助。 一、多
线程
为什么会有并发
问题
为什么多
线程
同时访问(读写)同个变量,会有并发
问题
? Java 内存模型规定了所有的变量都存储在主内存中,每条
线程
有自己的工
同步
线程
和异步
线程
的区别
概念 1:同步可以看做是一个单
线程
操作,只要客户端请求了,在服务器没有反馈信息之前是一个
线程
阻塞状态(就是假死状态,不能操作其他方法)。 2:异步肯定是个多
线程
。在客户端请求时,可以执行其他
线程
,并且在把这个
线程
存放在他的队列里面,有序的执行。(可以设置
线程
的数量,当超过最大时会显示等待状态)。
线程
同步与异步区别
线程
同步是多个
线程
同时访问同一资源,等待资源访问结束,浪费时间,效率低
线程
异步:访问资源时在空闲等待时同时访问其他资源,实现多
线程
机制 异步处理就是,你现在问我
问题
,我可以不回答你,等我
ATL
3,245
社区成员
48,537
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章