终止pthreads

时间:2014-12-23 16:08:36

标签: c++ c multithreading pthreads

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

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

1 个答案:

答案 0 :(得分:0)

但是你想要。可能最简单的方法是让一个布尔变量受到互斥锁的保护,该互斥锁是在找到并定期检查解决方案时设置的。如果一个线程找到变量集,这意味着其他一些线程找到了解决方案,它应该终止。

您的问题表明您正在考虑错误的线程。您不需要“到达”线程使其终止或做正确的事情。你必须编写代码,以便线程首先做正确的事情,只做需要完成的工作,并在没有任何事情要做时终止。这样,你不需要强迫他们用一些额外的机制来做正确的事情。

另外,为了澄清,pthread_join并未停止线程。它只是等待一个线程终止并在它之后清理。