社区
进程/线程/DLL
帖子详情
线程被terminate掉之后,怎么释放其初始的栈空间
王嘉平
2004-06-13 08:22:01
情况是这样的,我程序里面有用TerminateThread来中止线程。但是由于程序是长时间运行的,结果发现2g的virtual space全部用完,以后的CreateThread就都失败了。原因是栈空间没释放,请问怎么释放? 我保证没有句柄泄漏,CloseHandle我都检查了。
thx
...全文
246
15
打赏
收藏
线程被terminate掉之后,怎么释放其初始的栈空间
情况是这样的,我程序里面有用TerminateThread来中止线程。但是由于程序是长时间运行的,结果发现2g的virtual space全部用完,以后的CreateThread就都失败了。原因是栈空间没释放,请问怎么释放? 我保证没有句柄泄漏,CloseHandle我都检查了。 thx
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
15 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
sohou
2004-06-18
打赏
举报
回复
好象是自己结束的
enoloo
2004-06-18
打赏
举报
回复
非常同意 vcforever(霓裳羽衣)。
线程自己等待通知,然后结束。等待的时候是不怎么占cpu的。
solobird
2004-06-18
打赏
举报
回复
直接Terminate肯定无法释放的,要线程自己退出才能的。用事件内核对象吧。
王嘉平
2004-06-17
打赏
举报
回复
不是吧??? 难道就没办法释放???
vcforever
2004-06-17
打赏
举报
回复
可以不使用TerminateThread函数来结束线程,使用Event对象,在线程中用WaitForSingleObject()函数来等待,Event对象被激发!WaitForSingleObject函数返回后就调用return语句,让你得线程函数也返回,这样,线程所占得堆栈空间就可以释放了!
TerminateThread函数最初设计得时候就是保证线程结束后保留线程得堆栈空间,这样,在其他线程访问这个被TerminateThread函数结束得线程时才不至于发生访问违规得错误!
会思考的草
2004-06-17
打赏
举报
回复
应该是必须要通知线程自己结束。
另外,如果你有用到crt库的话,最好用__beginthreadex代替CreateThread,否则就算正常退出线程,也会有泄漏。
会思考的草
2004-06-17
打赏
举报
回复
这个好像是不可以的吧,整个进程结束后,系统会收回内存。
Wenxy1
2004-06-17
打赏
举报
回复
同意 Eearbird(early_bird).
comman_wang
2004-06-17
打赏
举报
回复
是否可以通过其他方法来代替CreateThread。
如AfxBeginThread或Thread Pooling
Eearbird
2004-06-17
打赏
举报
回复
TerminateThread,即使加上CloseHandle,也不能把所有的资源释放掉。
一种可行的办法:
通知线程关闭,然后可以使用WaitForSingleObject等待线程退出(handle使用的线程的句柄)。这样才能把栈空间释放掉。
badmanhd
2004-06-17
打赏
举报
回复
是呀!好象一般我们都是通知线程自己结束自己的!
lianglp
2004-06-17
打赏
举报
回复
楼主能否先通知线程关闭???
大脚板
2004-06-17
打赏
举报
回复
既然程序是长时间运行的,为什么要TerminateThread
thlintao
2004-06-15
打赏
举报
回复
恐怕不行了。除非你用内存优化软件,不过,这不是你的意思吧
王嘉平
2004-06-14
打赏
举报
回复
自己 up~~~
QThread之
terminate
()
@[TOC]QThread之
terminate
() 关于Qt
线程
终止 基本的Qt
线程
两种方法,一是:继承...利用标志位,使其
线程
退出,但是如果
线程
里代码复杂,需要标志位太多,这种优雅放视就不太合适。 暴力结束
线程
,
terminate
(); 这种方
Qt中QThread安全退出方式总结
QThread的使用方式 在Qt中,使用QThread实现子
线程
的方式有两种: 继承QThread,重写run函数 继承QObject,使用moveToThread方式...当
线程
终止时,所有等待该
线程
完成的
线程
将被唤醒。 警告:此函数是危险的,不鼓励使
QThread 之
terminate
()
QThread 之
terminate
()
Qt多
线程
1:QThread
Qt有两种多
线程
的方法,其中一种是继承QThread的run函数,另外一种是把一个继承于QObject的类转移到一个Thread里。 Qt4.8之前都是使用继承QThread的run这种方法,但是Qt4.8
之后
,Qt官方建议使用第二种方法。两种方法...
1、
线程
资源的
释放
linux
线程
进程/线程/DLL
15,471
社区成员
49,181
社区内容
发帖
与我相关
我的任务
进程/线程/DLL
VC/MFC 进程/线程/DLL
复制链接
扫一扫
分享
社区描述
VC/MFC 进程/线程/DLL
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章