【发布时间】:2012-07-19 04:20:31
【问题描述】:
Pthread 互斥锁不是异步信号安全的。这是什么意思?
【问题讨论】:
标签: linux synchronization pthreads mutex
Pthread 互斥锁不是异步信号安全的。这是什么意思?
【问题讨论】:
标签: linux synchronization pthreads mutex
这意味着您不能从信号处理程序内部做任何涉及互斥锁的事情。 (从技术上讲,仅适用于 异步 信号,但所有 同步 信号都适用于“那个指针不指向任何东西,我现在要杀死你的进程” “所以它没有实际意义。)
【讨论】:
raise()同步引发。
si_code 可靠地区分。一些系统对si_code 的分类比其他系统更精细,但一般来说,对于kill、@ 987654327@(如果定义了该常量)用于sigqueue 设置的信号,以及内核生成的信号的其他一些非零值(当然可能是同步或异步,取决于上下文)。但是无论如何,我想在SIGSEGV处理程序中使用互斥锁的情况感到茫然。
SIGPIPE 将是同步的,因为它是为了响应尝试在另一端清空的管道上执行read(或write)操作而引发的关闭。