【问题标题】:Is a signal caught if a thread is waiting on a mutex?如果线程正在等待互斥体,是否会捕获信号?
【发布时间】:2014-07-24 13:52:02
【问题描述】:

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

【问题讨论】:

    标签: c++ linux pthreads signals mutex


    【解决方案1】:

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

    人 pthread_mutex_lock

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

    【讨论】:

    • 噢!花时间看信号文档,而不是 pthread 文档。非常感谢:-)
    • 同样,对于 pthread 锁调用,没有 EINTR 的返回值 (errno)。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-14
    • 2012-06-13
    • 1970-01-01
    相关资源
    最近更新 更多