如何跳出线程?

TripH0101 2010-06-29 03:37:12
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
CTestThread * test = new CTestThread(false);
}
假如我的线程中有10个测试函数要执行,如果第5个测试函数Fail,这时如果要跳出线程,不招待剩下的5个函数怎么办?
...全文
170 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
TripH0101 2010-07-01
  • 打赏
  • 举报
回复
多谢,设一个全局变量就OK了
zzbinfo 2010-07-01
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 thinkhand 的回复:]
7楼的回答有点问题,在线程Execute()中代码只执行一次。要让其循环执行 得加个while(!Terminated)才可以一直不停的执行下去,知道它被Terminated。我个人认为应该加个全局变量 。
例如:设置全局变量 bool zhixing.然后在Execute()中加入
while(!Terminated)
{
bool tmp;
//锁定独占
tmp =zhixi……
[/Quote]
我表述的有问题,呵呵,其实就是你说的意思
reage_wang 2010-06-30
  • 打赏
  • 举报
回复
用 goto
ThinkHand 2010-06-30
  • 打赏
  • 举报
回复
7楼的回答有点问题,在线程Execute()中代码只执行一次。要让其循环执行 得加个while(!Terminated)才可以一直不停的执行下去,知道它被Terminated。我个人认为应该加个全局变量 。
例如:设置全局变量 bool zhixing.然后在Execute()中加入
while(!Terminated)
{
bool tmp;
//锁定独占
tmp =zhixing;
//释放资源
if(!tmp)
this->阻塞/退出。

}
zzbinfo 2010-06-29
  • 打赏
  • 举报
回复
个人理解,线程是个while循环,你要是顺序执行得,就只能设置标志位或者说标志变量,标志为真时就执行函数,不然就跳过
wwyyxx26 2010-06-29
  • 打赏
  • 举报
回复
try
{


}
catch( )
{

}
应该可以的
TripH0101 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ccrun 的回复:]

引用 1 楼 china_west 的回复:
重启...


这也太强悍了吧。干脆重装系统得了。


你线程的执行体中是如何调用这几个函数的,顺序执行还是?
[/Quote]是顺序执行的
ccrun.com 2010-06-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 china_west 的回复:]
重启...
[/Quote]

这也太强悍了吧。干脆重装系统得了。


你线程的执行体中是如何调用这几个函数的,顺序执行还是?
hind24 2010-06-29
  • 打赏
  • 举报
回复
楼主说的好像是同一个线程内的函数

可以在线程内设一个状态变量,每个函数执行前检查它,执行完根据结果修改它,如果发现有问题就不执行了,让线程自己走完
___NULL 2010-06-29
  • 打赏
  • 举报
回复
设置一个公共变量,各个线程检测公共变量的值,根据值进行相应操作,因为操作的是线程,也不必担心这个公共变量会被多个线程同时修改。
china_west 2010-06-29
  • 打赏
  • 举报
回复
重启...

13,825

社区成员

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

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