2

在 APUP 第 12.5 节中,提到:

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

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

有例子吗?

谢谢

4

1 回答 1

2

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

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

于 2012-03-01T08:50:53.027 回答