线程执行到一半,怎么退出?

yydelphi 2006-10-23 03:13:37
void __fastcall MyThread::Execute()
{
//....
while ( !Terminate )
{
func1();
}//end of while()

}

void fuc1()
{
//do sth
//执行到这里,想结束线程,怎么弄?
}

...全文
276 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
do2008 2006-10-23
  • 打赏
  • 举报
回复
unsigned(僵哥) 的方法,偶还真没有用过,学习`~~~

偶一般是检查一个flag,然后退出execute函数
僵哥 2006-10-23
  • 打赏
  • 举报
回复
最好的办法是让你的线程有WM_QUIT消息的处理,然后由于线程调用的过程虽然可能没有该线程的对象,但是却是在同一线程当中执行,所以可以使用
PostThreadMessage(GetCurrentThreadId(),WM_QUIT,0,0);
然后再让当前函数立即用return 返回.
jaffy 2006-10-23
  • 打赏
  • 举报
回复
老大,有个TERMINATED的属性可以在线城类中直接赋值的
然后注意你WHILE的条件TERMINATED = false
如果为TURE就退出循环了
yydelphi 2006-10-23
  • 打赏
  • 举报
回复
当然可以在Mythread中定义个flag, 在while循环中检查这个flag,在func1()中想退出时置这个flag.

有没有thread这个类本身的方法可以用?
jaffy 2006-10-23
  • 打赏
  • 举报
回复
为什么不能退出WHILE循环,或者设个标志位直接RETURN或者直接调用TERMINATE方法
yydelphi 2006-10-23
  • 打赏
  • 举报
回复
或者 //执行到这里,想退出while()循环

我直接 pthread->Terminate = true; 不行.
因为退出while()循环后还要做其他事情

13,825

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧