linux - 如何终止 pthread 中的休眠线程?

标签 linux multithreading pthreads

我有一个线程睡了很长时间,然后醒来做某事,然后又睡了,像这样:

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/

相关文章:

java - 带读/写锁的信号量

java - RxJava 无法在未调用 Looper.prepare() 的线程内创建处理程序

c - pthread_timedjoin_np 的替代方案

linux - 向进程发送击键

linux - 为什么一个操作系统 (Windows) 的二进制文件不能在同一底层架构的其他操作系统 (Linux) 中运行?

linux - 我想用 sed 编辑器更改文本

python - 对 Google Cloud Vision API 的多线程 python 调用

multithreading - POSIX 线程与 Win32 线程

c - C编程中的pthread内存泄漏

linux - 更改虚拟机 KVM 中的 root 密码