我是一名新手linux开发人员,所以我不确切知道如何解决问题。
在我的主要内容中,我会生成许多工作线程,每个线程执行其任务并休眠几秒钟。
在某些情况下,我必须终止。我需要避免等待每个睡眠终止,所以我想向每个线程发送一个信号来中断睡眠(在我的情况下是nanosleep)并终止threadproc循环。
我阅读了很多关于pthread_kill的文档,但是当我将一个SIGUSR1发送给一个线程时,该进程以异常方式终止。
有人能指出我的解决方案吗?
非常感谢!!!
修改 已解决 ,解决方案为
pthread_cond_timedwait
和pthread_cond_signal
。
答案 0 :(得分:1)
我不知道您的代码的详细信息,但这听起来像条件变量的工作:cs.nmsu.edu/~jcook/Tools/pthreads/pthread_cond.html - Galik
我刚刚根据pthread_cond_signal
和pthread_cond_timedwait
实施了解决方案,我确认如果有效! - Dare Devil
答案 1 :(得分:0)
在发送信号时,您正在做正确的事情。
唯一缺少的就是抓住这个信号。您必须用自己的信号操作替换信号操作。在信号处理程序中,您可以设置变量并在睡眠返回后检查它。
查看sigaction