发送信号到pthread以中止睡眠

时间:2013-03-28 10:28:58

标签: c linux pthreads signals

我有一个pthread函数,它使用usleep()大部分时间休眠 我想从主进程向线程发送一个信号,以便有时中断睡眠。

问题是我找不到使用pthread_kill()

准确发送哪个信号的参考

usleep()手册页,指出SIGALRM不应与usleep()一起使用

我是否需要使用特定信号,这没关系?

2 个答案:

答案 0 :(得分:5)

线程之间同步的工具不是信号和usleep(或nanosleep),而是pthread_mutex_tpthread_cond_t的组合。让你的线程等待一个条件(这可以通过超时完成)并让你的main线程在条件变量上发送一个“信号”。

答案 1 :(得分:3)

对于传递给线程/进程的每个信号,

usleep返回EINTR。你可能最好使用SIGUSR信号。

此外,usleep现已过时:请考虑使用nanosleep。作为额外的奖励,您将知道在传递信号时剩余的睡眠时间。