函数的可重入性
(2019-08-31 23:02:20)分类: 编程技术 |
若一个程序或子程序可以安全的被并行执行,则称其为可重入(reentrant)的;即当该子程序正在运行时,可以再次进入并执行它。
常见的不可重入函数有
- printf - 引用全局变量stdout
- malloc - 全局内存分配表
- free -
全局内存分配表
中断处理函数需要可重入,所以不能调用上述函数。
在Unix里通常都有加上_r后缀的同名可重入函数版本。
线程安全与可重入性是两个不同性质的概念。
可重入函数未必是线程安全的;线程安全函数未必是可重入的。
常见的不可重入函数包括:
rand, srand
getenv, getenv_s
strtok, strerror
asctime, ctime, localtime,
gmtime
setlocale
atomic_init
tmpnam
mbrtoc16, c16rtomb, mbrtoc32,
c32rtomb
gethostbyaddr,
gethostbyname
inet_ntoa
malloc函数线程安全但是不可重入
函数可重入性(Reentrancy)概念详解
Malloc函数的线程安全与可重入性分析
前一篇:Emacsorg-mode
后一篇:Multi-layer