【发布时间】:2018-02-07 03:42:12
【问题描述】:
我想等待一个 pthread 条件变量,但是当我得到一个 SIGUSR1(或任何其他信号)时,我想停止等待并检测它是否因为信号而停止等待,而不是因为 pthread_cond_signal 或虚假唤醒。我该怎么做?
【问题讨论】:
-
@alk pthread_cond_wait 和 pthread_cond_timedwait 的手册页说“这些函数不应返回 [EINTR] 的错误代码。”
-
看起来您可能需要使用辅助线程(用于捕获信号或等待条件变量)。实际上,要关闭所有比赛,您可能必须使用两个辅助线程和一个信号量,而原始线程在信号量上等待。