社区
网络编程
帖子详情
如果我用SuspendThread将一个线程挂起,那么这时我要中止这个线程应该怎样做啊?
lewice
2004-08-25 09:34:36
问题如上,谢谢大家了,有点急
...全文
289
14
打赏
收藏
如果我用SuspendThread将一个线程挂起,那么这时我要中止这个线程应该怎样做啊?
问题如上,谢谢大家了,有点急
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
jmcooler
2004-08-27
打赏
举报
回复
一句话,线程里进行耗时的操作时,必须在每步都检查退出标志或者事件,以在收到主程序的退出请求时,正常退出。工作线程里就入上面我讲的。而用户接口线程(或者称为界面线程),你只需要用PostThreadMessage给该线程Post一个WM_QUIT消息,然后等待线程退出。但接口线程里也不应该进行耗时的操作。
jmcooler
2004-08-27
打赏
举报
回复
线程被挂起时,是没有办法正常退出的。要么采用TerminateThread,强制关闭线程,至于TerminateThread关闭后,内存的释放问题,你可以把需要在线程里分配的内存挪到线程外面。既然是调用TerminateThread,那就是到了不得已的地步了,慎用这个函数。
正确的做法是,ResumeThread先让线程运行,再用WaitForSingleObject等待线程一短段时间。如果线程里有循环,你可以创建一个退出事件(Event),线程里每执行一步循环就用if( WaitForSingleObject( hExitEvent, 0 ) == WAIT_OBJCT_0 )则return。而主线程里需要设置这个事件,再用WaitForSingleObject等待线程退出。
chqu18
2004-08-26
打赏
举报
回复
应该要先ResumeThread吧,要不这样去终止一它可能会有资源不释放.
hjhd0
2004-08-26
打赏
举报
回复
像windows_editor(天鹅飞去鸟不归 回峰山中我独醉) 说的
线程的函数在设计的时候就要能相应退出消息 (在while循环内)
rwdx
2004-08-26
打赏
举报
回复
唤醒它,让你自己end,要不就Terminate
danielzhu
2004-08-26
打赏
举报
回复
先 ResumeThread,然后
AfxEndThread或者return 0;
如果ResumeThread,那么线程就会等待操作系统的ResumeThread事件,如果没有强制结束(TerminateThread)该线程,那么它就是一直处于挂起状态。
windows_editor
2004-08-26
打赏
举报
回复
挂起后不resume 那就不能让线程自己释放了, 只有Terminate
lewice
2004-08-25
打赏
举报
回复
我就是想知道不resumeThread,能否中止线程
danielzhu
2004-08-25
打赏
举报
回复
先 ResumeThread,然后
AfxEndThread或者return 0;
内存泄漏
2004-08-25
打赏
举报
回复
如果线程代码在堆中分配了内存,都会没有机会得到释放,确实会引起内存泄漏。。 微软也提醒要小心使用的。
lianglp
2004-08-25
打赏
举报
回复
那样的话,楼主这个问题就不好办了。
windows_editor
2004-08-25
打赏
举报
回复
终止?
如果线程正在循环
发送自定义消息, 线程收到这个消息后break循环,就可以了
lewice
2004-08-25
打赏
举报
回复
TerminateThread(),我听说不用它比较好,内存会漏的
lianglp
2004-08-25
打赏
举报
回复
TerminateThread()不可以吗?
执行
挂起
状态
线程
的终止与暂停
最近研究执行
挂起
状态,稍微总结一下,以后继续补充:
Suspend
Thread
、Resume
Thread
、Exit
Thread
和Terminate
Thread
函数均能够实现停止
一个
线程
的进行,但它们的含意又是不同的。 1)
Suspend
Thread
和Resume
Thread
。
Suspend
Thread
函数用于
挂起
指定的
线程
,当
线程
被
挂起
,也就停止了运行。他只有个一参数...
windows核心编程之
线程
调度、优先级和关联性
文章目录1.
线程
的
挂起
和恢复2. 进程的
挂起
和恢复3. 睡眠4. 切换到另
一个
进程5.
线程
的执行时间6.
线程
优先级7. 优先级编程7.1 进程7.2
线程
8. 动态提升
线程
优先级 抢占式操作系统必须使用某种算法确定对何时应对哪些
线程
进行调度,时间又为多长。 1.
线程
的
挂起
和恢复 在
线程
内核对象中有
一个
值表示
线程
的
挂起
计数。调用CreateProcess或者 Create
Thread
时,系统将创建
线程
内核对象,并把
挂起
计数初始化为1。这样,就不会给这个
线程
调度CPU了。这正是我们所希望的,因为
线程
初始化
线程
的终止与暂停
Suspend
Thread
、Resume
Thread
、Exit
Thread
和Terminate
Thread
函数均能够实现停止
一个
线程
的进行,但它们的含义又是不同的。 1)
Suspend
Thread
和Resume
Thread
。
Suspend
Thread
函数用于
挂起
指定的
线程
,当
线程
被
挂起
,也就停止了运行。他只有个一参数h
Thread
,表示被
挂起
的
线程
的句柄(每个
线程
都有
一个
挂起
状态计数值,当其值大
Windows核心编程:
线程
调度
作者:shenzi链接:http://blog.csdn.net/shenzi Windows核心编程:
线程
调度1.
线程
的
挂起
和恢复 在
线程
的内核对象中有
一个
值表示
线程
的
挂起
计数。调用CreateProcess或者Create
Thread
时,系统将创建
线程
内核对象,并把
挂起
计数初始化为1。这样,就不会给这个
线程
调度CPU了。这正是我
网络编程
18,356
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章