可重入函数

int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 0};
int b[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20};
int sum(int array[], int len)
{
    static int sum = 0;//存在静态变量,使得函数不能重入

    for(int i = 0; i<len ; i++)
    	sum += array[i];
    return sum;
    
}

void task1(void)
{
    sum(a, 10);
}

void task2(void)
{
    sum(b, 20);
}

可重入函数

不能存在的因素

实现的方法

操作系统解决方法

在访问公共的资源的时候采取一定的安全措施,实施对资源的互斥访问,或者在访问时不允许被打断

具体方法:信号量、互斥量、锁等机制

临界资源:公共的资源,如全局变量、静态变量、缓冲区、打印机等

临界区:访问临界资源的代码段