c# - 我们可以使用 "goto"关键字来结束线程吗?

标签 c# java c++ c goto

在许多编程语言中,都提出了许多问题来停止 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++,否则我可以实现并看到自己。

最佳答案

这不起作用。

  1. 您无法转到其他方法。
  2. 线程不与方法绑定(bind),一个方法可以由多个线程执行。

如果 goto 位置位于同一方法中,则执行将在执行 goto 语句的线程中的新位置继续。

可以做的是转到线程方法的末尾 - 如果当前代码位于该方法中。这不会结束线程,但 goto 会将程序流移动到线程方法结束之前,这将导致线程方法完成执行,从而结束线程。
这与简单地从线程方法返回效果相同。

关于c# - 我们可以使用 "goto"关键字来结束线程吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14216299/

相关文章:

c# - 扩展方法 : IXmlLineInfo 出现问题

c# - c#关闭excel的问题

java - 如何在 Datagrip 中将 Java SQL 字符串转换为 SQL?

c++ - QInputDialog - 用回车键确认

c# - 如何使用 C# 以编程方式获取 SQL Server 2008 Express R2 的默认备份路径?

c# 从 BindingSource 获取 DataTable 并编辑它

java - 向 WebService 添加字段

java - SSL + NIO 的线程安全

c++ - 一种存储 C++ CLI 参数的好方法? (不使用库)

c# - 加载 MITab dll 在 c# 中给出 System.BadImageFormatException