如果线程正在等待互斥锁,是否会捕获信号?

时间:2014-07-24 13:52:02

标签: c++ linux pthreads signals mutex

我在互斥锁上阻塞了一个线程。该应用程序还具有使用sigaction设置的自定义信号处理程序。如果接收捕获信号的线程在互斥锁上被阻塞,信号处理程序是否会被调用,还是会被阻塞直到互斥锁被释放?

1 个答案:

答案 0 :(得分:7)

很可能它将依赖于实现,例如在pthread中将执行信号处理程序,然后线程将在处理程序返回时等待互斥:

  

man pthread_mutex_lock

     

如果信号在返回时传递给等待互斥锁的线程   来自信号处理程序          线程将继续等待互斥锁,就好像它没有被中断一样。