Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
我有一个 pthread 函数,它大部分时间都在睡觉,usleep() 我想从主进程向线程发送信号以有时中断睡眠。
usleep()
问题是我找不到确切使用哪个信号发送的任何参考pthread_kill()
pthread_kill()
手册页,usleep()指出SIGALRM不应与usleep()
SIGALRM
我是否需要使用特定的信号,没关系?
线程之间同步的工具不是信号和usleep(或nanosleep),而是pthread_mutex_t和的组合pthread_cond_t。只需让您的线程等待一个条件(这可以通过超时来完成)并让您的main线程在条件变量上发送一个“信号”。
usleep
nanosleep
pthread_mutex_t
pthread_cond_t
main
usleepEINTR在传递给线程/进程的每个信号上返回。你可能最好使用SIGUSR信号。
EINTR
SIGUSR
此外,usleep现在已过时:考虑nanosleep改用。作为额外的奖励,您将知道在传递信号时剩余的睡眠时间。