一、什么是可重入函数?
答:可重入函数就是多个线程访问同一个函数时,彼此之间互不影响,均能得到期望的结果
二、如何使函数可重入?
答:保证函数所有的输入都来自于函数的形参,所有的输出都为从函数返回值或输出参数得到,
函数内部不得使用全局变量或者静态局部变量
三、不可重入函数举例
int g_flag = 0;
int fun(int x)
{
int a = 0;
//在函数内部使用了全局变量g_flag
if (g_flag > 0)
{
a += x;
}
return a;
}
或者
int fun(int x)
{
static int a = 0;
//在函数内部使用了静态局部变量a
a += x;
return a;
}
原文地址:http://blog.csdn.net/dcx1205/article/details/45703303