我有一个pthread函数,它使用usleep()
大部分时间休眠
我想从主进程向线程发送一个信号,以便有时中断睡眠。
问题是我找不到使用pthread_kill()
usleep()
手册页,指出SIGALRM
不应与usleep()
一起使用
我是否需要使用特定信号,这没关系?
答案 0 :(得分:5)
线程之间同步的工具不是信号和usleep
(或nanosleep
),而是pthread_mutex_t
和pthread_cond_t
的组合。让你的线程等待一个条件(这可以通过超时完成)并让你的main
线程在条件变量上发送一个“信号”。
答案 1 :(得分:3)
usleep
返回EINTR
。你可能最好使用SIGUSR
信号。
此外,usleep
现已过时:请考虑使用nanosleep
。作为额外的奖励,您将知道在传递信号时剩余的睡眠时间。