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

2014-11-24 12:25:52 · 作者: · 浏览: 2

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


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


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


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


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



摘自《UNPv2》


linux/unix中的线程安全函数


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


个别函数如下:



摘自《UNPv1》


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