可重入函数也就是异步信号安全函数,一般是除了使用自己栈上的变量以外不依赖于任何环境的purecode(纯代码)
(使用锁是无法解决可重入问题的,因为当出现信号中断的,中断函数里再次调用此函数就会出现死锁!)
而线程安全函数,如果使用了静态数据或者全局数据的话,可以用锁来将其变为线程安全的。(但无论怎么样都无法变为可重入函数(或称异步信号安全函数))
可重入函数一定是线程安全函数。反之,则不正确。
linux/unix中的异步信号函数(可用在中断函数中的函数)
摘自《UNPv2》
linux/unix中的线程安全函数
除个别函数外,posix和ANSI C标准定义的所有都是线程安全的
个别函数如下:
摘自《UNPv1》
函数加上后缀_r的一般是非标准的线程安全函数.