可重入函数:可以中断的函数
不可重入函数中断了之后再来就不知道什么是什么了。
如何保护全局变量:
1.使用局部变量
2.使用信号量
3.关中断
题目:以你熟悉的编程语言为例(C,Java等)说明什么样的程序段(函数、方法等)是不可重入的,请解释。如何修改使之可重入。
答案:
不可重入程序段例子
void test()
{
static int i=0;
printf("%d\n",i);
i++;
printf("%d\n",i);
}
解释:第一次调用,打印出
0
1
第二次调用打印出
1
2
结果不一样,因为i是静态局部变量,存储于进程的全局数据区。
修改结果
void test()
{
int i=0;
printf("%d\n",i );
i++;
printf("%d\n",i);
}
无论何时调用,都是打印出
0
1