c++ - 终止 pthreads

标签 c++ c multithreading pthreads

可以使用 pthread_join() 停止线程。但让我们想象一下,有许多线程执行复杂的任务,并且可能不会同时停止。其中之一可能会提前停止(因为它得到了所需的结果)。但是如何停止其他几乎无限的线程呢?如果一个线程找到了正确的解决方案,则不再有剩余的解决方案,因此其他线程将永远不会成功。

当其中一个线程得到结果并停止时,如何终止所有线程?

最佳答案

随心所欲。也许最简单的方法是使用互斥体保护 bool 变量,该互斥体在找到解决方案并定期检查时设置。如果一个线程找到了变量集,则意味着其他线程找到了解决方案,并且应该终止。

您的问题表明您对线程的思考不正确。您不需要“进入”线程来使其终止或做正确的事情。您必须编写代码,以便线程首先执行正确的操作,只执行需要完成的工作,并在无事可做时终止。这样,您就不需要通过一些额外的机制强制他们做正确的事情。

另外,澄清一下,pthread_join 不会停止线程。它只是等待线程终止并在其后进行清理。

关于c++ - 终止 pthreads,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623955/

相关文章:

c++ - 模板函数使用参数包时如何传递其他模板参数?

c - 6.5.2.3 结构和 union 成员中 C 中严格别名规则的异常(exception)

c - 释放 struct.name 的内存(调试错误 : HEAP CORRUPTION DETECTED)

c - 如何将一个字节写入特定内存地址的寄存器?

Android:如果已经运行,则停止方法被调用两次

c++ - QTextEdit::setTextFormat(Qt::LogText) 不存在了,我还能用什么来记录?

Sprite 之间的 C++ SDL 碰撞

c++ - 从共享内存存储和访问结构数组

c - 使用多线程读取文件

java - 如何在Java中连续检查文件是否存在? [复制]