在 APUP 第 12.5 节中,提到:
” 如果一个函数对于多个线程是可重入的,我们就说它是线程安全的。然而,这并没有告诉我们该函数对于信号处理程序是否是可重入的。”
我很困惑为什么一个函数是线程安全的但可能不是异步信号安全的。
有例子吗?
谢谢
最佳答案
通过使用互斥锁保护函数修改的状态,可以使函数成为线程安全的。然而,这不是异步信号安全的,因为如果您调用该函数,例如从信号处理程序中,程序可能会死锁。
具有此属性的常见函数是 malloc()。
关于multithreading - 线程安全与异步信号安全,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9512775/