可以使用 pthread_join()
停止线程。但让我们想象一下,有许多线程执行复杂的任务,并且可能不会同时停止。其中之一可能会提前停止(因为它得到了所需的结果)。但是如何停止其他几乎无限的线程呢?如果一个线程找到了正确的解决方案,则不再有剩余的解决方案,因此其他线程将永远不会成功。
当其中一个线程得到结果并停止时,如何终止所有线程?
最佳答案
随心所欲。也许最简单的方法是使用互斥体保护 bool 变量,该互斥体在找到解决方案并定期检查时设置。如果一个线程找到了变量集,则意味着其他线程找到了解决方案,并且应该终止。
您的问题表明您对线程的思考不正确。您不需要“进入”线程来使其终止或做正确的事情。您必须编写代码,以便线程首先执行正确的操作,只执行需要完成的工作,并在无事可做时终止。这样,您就不需要通过一些额外的机制强制他们做正确的事情。
另外,澄清一下,pthread_join
不会停止线程。它只是等待线程终止并在其后进行清理。
关于c++ - 终止 pthreads,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27623955/