Linux/Unix中的可重入函数与线程安全函数

可重入函数也就是异步信号安全函数,一般是除了使用自己栈上的变量以外不依赖于任何环境的purecode(纯代码)

(使用锁是无法解决可重入问题的,因为当出现信号中断的,中断函数里再次调用此函数就会出现死锁!)

而线程安全函数,如果使用了静态数据或者全局数据的话,可以用锁来将其变为线程安全的。(但无论怎么样都无法变为可重入函数(或称异步信号安全函数))

可重入函数一定是线程安全函数。反之,则不正确。

linux/unix中的异步信号函数(可用在中断函数中的函数)

Linux/Unix中的可重入函数与线程安全函数

摘自《UNPv2》

linux/unix中的线程安全函数

除个别函数外,posix和ANSI C标准定义的所有都是线程安全的

个别函数如下:

Linux/Unix中的可重入函数与线程安全函数

摘自《UNPv1》

函数加上后缀_r的一般是非标准的线程安全函数.

相关推荐