请教一个Free RTOS下使用全局变量的问题

2019-07-20 04:56发布

很多教程都说RTOS下使用全局变量必须加保护,否则多个任务使用同一个全局变量会发生冲突,导致破坏数据。这一点实在想不明白,全局变量不就是让任务通信吗,就是要他互相改写互相读取啊,怎么会破坏数据呢?


比如这个例子:

/********************************************/

int     flag    =  0;

void  vLED()
{
        if (flag   ==  1)LED = 1;
        if (flag   ==  0)LED = 0;

        任务延时(10);
}
void  vKEY()
{
        if (KEY   ==  1)flag = 1;
        if (KEY   ==  0)flag = 0;

        任务延时(10);
}


/********************************************/

比如这个例子,两个任务使用全局变量通信,没有做什么临界段什么保护,也没啥问题啊?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。