1

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

问题是我找不到确切使用哪个信号发送的任何参考pthread_kill()

手册页,usleep()指出SIGALRM不应与usleep()

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

4

2 回答 2

5

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

于 2013-03-28T10:37:56.957 回答
3

usleepEINTR在传递给线程/进程的每个信号上返回。你可能最好使用SIGUSR信号。

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

于 2013-03-28T10:37:34.667 回答