首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

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

2012-03-08 
一个关于线程挂起和终止的问题线程函数如下:void__fastcallTPlayThread::Execute(){while(!Teminated){...

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

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

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

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

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

热点排行