如果您在pthread_mutex_wait上阻塞的进程上发出信号(os信号,而不是pthread_mutex_unlo



让我困惑的是pthread_mutex_lock没有E_INTR作为返回值。尽管pthread_cond_wait可能是伪唤醒并返回0,但由于while循环和Mesa监视器语义,这不是问题。

所以,如果一个进程被pthread_mutex_lock阻塞,并且您发送一个信号来唤醒它,那么在执行信号处理程序之后,会发生什么?有什么机制可以避免这种虚假的觉醒吗?

如果一个进程被pthread_mutex_lock阻塞,并且您发送一个信号来唤醒它,那么在执行信号处理程序之后,会发生什么?

如果信号处理程序没有调用任何异步信号不安全操作,那么在处理程序返回后,进程将继续等待互斥。

如果信号处理程序确实调用了异步信号不安全操作(例如,解锁互斥锁(,则行为是未定义的:任何都可能发生,包括(但不限于(崩溃、永久阻塞、显示工作"正常"等。

最新更新