我有一个线程睡了很长时间,然后醒来做某事,然后又睡了,像这样:
while(some_condition)
{
// do something
sleep(1000);
}
我怎样才能让这个线程优雅快速地退出?
我尝试使用 pthread_cancel()
,但无法取消休眠线程。
我也试过改变 while 循环的条件,但仍然需要很长时间才能退出。
而且我不想使用 pthread_kill()
,因为它可能会在线程工作时终止它。
那么,有什么好的想法吗?
最佳答案
作为 sleep
的替代方法,您可以使用 pthread_cond_timedwait超时为 1000 毫秒。然后当你想退出时,给条件变量发信号。
这类似于您在 C#/Java 中使用等待和通知执行此操作的方式。
关于linux - 如何终止 pthread 中的休眠线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4778361/