我生成了一个随机数的线程,我的主线程需要在紧密循环中充当计时器。我想检查子线程是否结束,如果是,我想打破紧密循环。但是,我没有找到任何方法来做到这一点没有阻止。
我最好的想法是使用一个等于将创建的随机线程数的变量。当线程即将完成时,它应该减少变量。同时主线程可以快速检查变量以查看它是否大于0,如果是,则保持循环。
我希望一定有更好的方法。
答案 0 :(得分:2)
你的主线程在等待时是否需要做其他事情?为了完全回答您的问题,我需要更好地解释您想要实现的目标,但这里有一些工具可以解决您的问题:
pthread_kill
向主线程发送一个信号,这可能会中断它正在做的事情。您将不得不处理有关哪些操作是异步信号安全的问题(没有任何pthread函数)。pthread_cond_wait
(或pthread_cond_timedwait
。答案 1 :(得分:1)
您可以使用不会阻止或超时的pthread_tryjoin_np
或pthread_timedjoin_np
。
阅读手册页以获取确切的语义。这些是特定于Linux的,因为它们的名称和手册页状态是不可移植的。所以YMMV。