【发布时间】:2014-12-23 16:08:35
【问题描述】:
可以使用pthread_join() 停止线程。但是让我们想象一下,一个人有许多线程执行一项复杂的任务,并且可能不会同时停止。其中一个可能会更早停止(因为它得到了所需的结果)。但是如何停止其他几乎无限的线程呢?如果一个线程找到了正确的解决方案,就没有剩下的了,所以其他线程永远不会成功。
当其中一个线程得到结果并停止时,如何终止所有线程?
【问题讨论】:
-
我相信这是复制品,但还不足以挥舞强大的锤子:stackoverflow.com/q/12029180/10077
-
pthread_join()不会停止线程——它会一直等到线程自行停止,然后获取返回值和其他相关的数据结构。如果您需要一种方法来对线程进行有序关闭,请阅读pthread_cancel()和相关例程。为了强行杀死正在运行的线程,您需要了解信号处理,例如pthread_exit().
标签: c++ c multithreading pthreads