线程安全与异步信号安全

时间:2012-03-01 08:20:53

标签: multithreading reentrancy

在APUP第12.5节中,提到:

” 如果函数对于多个线程是可重入的,我们说它是线程安全的。但是,这并没有告诉我们该函数是否可以在信号处理程序中重入。“

我很困惑为什么函数是线程安全的但可能不是异步信号安全的。

有一个例子吗?

谢谢

1 个答案:

答案 0 :(得分:1)

通过使用互斥锁保护其修改的状态,可以使函数成为线程安全的。但是,这不是异步信号安全的,因为如果你调用该函数,例如从信号处理程序中,程序可以死锁。

具有此属性的常用函数是malloc()。