读书人

一个关于线程挂起和终止的有关问题

发布时间: 2012-03-08 13:30:13 作者: rapoo

一个关于线程挂起和终止的问题
线程函数如下:
void __fastcall TPlayThread::Execute()
{
while(!Teminated)
{
...
...
}
}

假如线程运行到一半,将线程Suspend,然后再Terminate,该线程能终止吗?
线程的Terminate方法只是将Teminated赋值为true,如果线程体已经挂起,那么Terminate方法岂不是没有作用了吗?

[解决办法]
Terminate 终止线程,便不能被唤醒
Suspend 挂起仍可唤醒,同时也可以被 Terminate ,该操作不是在线程内完成,而是对线程对象本身的操作,所以不存在你说的挂起便不能被 Terminate
但 Terminate 后对象仍然存在,要么用 delete 删除对象,要么自我释放。
[解决办法]
while(!Teminated)
{
...
...
}

线程指针-> Terminate() 来终止线程

这样就可以了,当然这只是终止线程的运行,至于线程是否被结束,还需要判断

读书人网 >C++ Builder

热点推荐