加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – 如何在pthread中终止睡眠线程?

发布时间:2020-12-14 02:22:27 所属栏目:Linux 来源:网络整理
导读:我有一个睡了很长时间的线程,然后醒来做某事,然后再次睡觉,像这样: while(some_condition){ // do something sleep(1000);} 我怎样才能让这个线程优雅而快速地退出? 我尝试使用pthread_cancel(),但无法取消睡眠线程. 我也试过改变while循环的条件,但是退出
我有一个睡了很长时间的线程,然后醒来做某事,然后再次睡觉,像这样:
while(some_condition)
{
    // do something
    sleep(1000);
}

我怎样才能让这个线程优雅而快速地退出?

我尝试使用pthread_cancel(),但无法取消睡眠线程.
我也试过改变while循环的条件,但是退出仍然需要很长时间.
而且我不想使用pthread_kill(),因为它可能会在线程工作时终止它.

那么,有什么好主意吗?

解决方法

作为睡眠的替代方案,您可以在1000毫秒超时时使用 pthread_cond_timedwait.然后,当您想要退出时,发出条件变量的信号.

这类似于使用wait和notify在C#/ Java中执行此操作的方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读