有没有办法同时结束线程?
Posted
技术标签:
【中文标题】有没有办法同时结束线程?【英文标题】:Is there any way to end threads simultaneously? 【发布时间】:2020-05-09 15:34:55 【问题描述】:我有一个程序(在 c++ WIN32 和 VisualStudio19 中),其中我有几个线程具有相同的句柄。 有这样的想法:
father
while(true)
HANDLE son=createThread...
son
//The son may be waiting in a semaphore
有没有办法同时结束线程的“生命”?就像在 UNIX 中使用 sigterm 或 sigkill 一样。 线程可能在信号量中等待
【问题讨论】:
我认为这是不可能的,你必须自己实现。将所有句柄保存在一个容器中并调用TerminateThread
。
这是一个大学项目,我们不能使用 TerminateThread
“其中我有几个线程具有相同的句柄” - 听起来很糟糕。如果线程都共享相同的标识符,你如何区分它们?
对子线程进行编程的“正确”方法是让它们偶尔检查“终止事件”,并在它们应该存在时让父亲发出信号。
如果没有额外的上下文,您的问题毫无意义。
【参考方案1】:
通常在 Windows 上,如果您无法避免这种需要,您将运行所有线程以终止到一个单独的进程,然后终止该进程 - 无论它是一个线程还是多个线程。
【讨论】:
以上是关于有没有办法同时结束线程?的主要内容,如果未能解决你的问题,请参考以下文章
java线程池5个线程同时运行 有一个线程等待数秒无法继续运行被结束掉,而其他4个线程不受那个线程的影响