在Linux

时间:2016-01-31 23:09:24

标签: c++ linux pthreads signals sleep

我是一名新手linux开发人员,所以我不确切知道如何解决问题。

在我的主要内容中,我会生成许多工作线程,每个线程执行其任务并休眠几秒钟。

在某些情况下,我必须终止。我需要避免等待每个睡眠终止,所以我想向每个线程发送一个信号来中断睡眠(在我的情况下是nanosleep)并终止threadproc循环。

我阅读了很多关于pthread_kill的文档,但是当我将一个SIGUSR1发送给一个线程时,该进程以异常方式终止。

有人能指出我的解决方案吗?

非常感谢!!!

  

修改 已解决 ,解决方案为pthread_cond_timedwaitpthread_cond_signal

2 个答案:

答案 0 :(得分:1)

我不知道您的代码的详细信息,但这听起来像条件​​变量的工作:cs.nmsu.edu/~jcook/Tools/pthreads/pthread_cond.html - Galik

我刚刚根据pthread_cond_signalpthread_cond_timedwait实施了解决方案,我确认如果有效! - Dare Devil

答案 1 :(得分:0)

在发送信号时,您正在做正确的事情。 唯一缺少的就是抓住这个信号。您必须用自己的信号操作替换信号操作。在信号处理程序中,您可以设置变量并在睡眠返回后检查它。 查看sigaction