共享变量[RTOS]

时间:2015-07-23 12:54:12

标签: c embedded rtos freertos

简单背景:

在我的手机上运行freeRTOS。

我项目中的一个功能是一个处理存储在外部存储器中的参数的库。

基本上在启动时,main函数调用从外部存储器读取所有参数的函数,并将它们存储在库中,静态变量(非全局)。

现在,我有几个正在运行的任务。一些任务调用参数库中的函数来读取/写入参数。

问题: 当任务调用函数来读取参数时,它们最初尝试访问同一个变量。对?

不是每个任务都创建自己的整个库副本吗?

如果情况并非如此,那么我猜信号量是实现目标的方法,从那里我就没事了。

上传了两张图片:第一张是我认为正确的方式,第二张是错误的。

Correct Faulty

PS。无法访问任何控制器。因此,我在这里问:)

1 个答案:

答案 0 :(得分:1)

你的假设是正确的。您必须记住,您仍在编译单个C程序。您的MCU操作系统是您的程序的一部分,并不包含程序加载程序或类似的东西,并且您只有一个main
这实际上意味着您的程序将像任何正常的C程序一样,不会有任何重复的变量或隐藏的陷阱。唯一奇怪的是操作系统能够用魔法切换任务。