在许多编程语言中,都提出了许多问题来停止 thread
的执行。 .在c/c++
goto
仍然使用,如Java
, goto 没有使用,但仍然保留; stop()、stop(Throwable) 和 suspend()、destroy() 和resume() 旨在提供启动和停止线程的基本功能,但已被弃用。
我们可以使用 goto
只是简单地移出线程?
像这样的东西:
//Thread block
{...
if(some condition)
goto out;
.....
...
}//thread block over
out:
// I am out!!
}
我知道使用goto
这是一个非常非常糟糕的做法,但是还可以这样使用吗?
更新:
或者:
//Thread block
{...
if(some condition)
goto out;
.....
...
out:
// I am out!!
}//thread block over
从评论来看,这是解决方案吗?
更新2:
嗯,我得到了各种各样的答案。有些是,有些不是。我不太使用 c/c++,否则我可以实现并看到自己。
最佳答案
这不起作用。
- 您无法
转到
其他方法。 - 线程不与方法绑定(bind),一个方法可以由多个线程执行。
如果 goto
位置位于同一方法中,则执行将在执行 goto
语句的线程中的新位置继续。
您可以做的是转到线程方法的末尾 - 如果当前代码位于该方法中。这不会结束线程,但 goto
会将程序流移动到线程方法结束之前,这将导致线程方法完成执行,从而结束线程。
这与简单地从线程方法返回
效果相同。
关于c# - 我们可以使用 "goto"关键字来结束线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216299/