【发布时间】: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
-
“其中我有几个线程具有相同的句柄” - 听起来很糟糕。如果线程都共享相同的标识符,你如何区分它们?
-
对子线程进行编程的“正确”方法是让它们偶尔检查“终止事件”,并在它们应该存在时让父亲发出信号。
-
如果没有额外的上下文,您的问题毫无意义。
标签: c++ windows multithreading visual-studio semaphore