freeRTOS在切换线程时如何维护函数变量?

-1 c embedded operating-system freertos

最近我一直在为ARM和PIC设备开发自己的RTOS,所以我正在分析当前的RTOS概念.我在学习FreeRTOS时有些疑惑,

它如何处理函数变量?我们如何管理函数内的变量?

例1:

我们在FreeRTOS中的函数A和B的两个线程中声明了一个局部变量'i',但是函数A的变量'i'受函数B的影响.

EX-2:

我们有两个线程A,B和一个像延迟的函数.但是线程A和B都调用相同的函数delay.FreeRTOS如何为两个线程(A和B)分配单个延迟资源?

V. *_*nko 5

在函数中声明的变量放在堆栈上.线程具有不同的堆栈,因此函数局部变量对它们是不同的.

这是第二个问题的答案.因为delay,OS必须为每个线程创建数据结构.例如,delay参数将具有延迟的增量.具有最小delta的线程被唤醒; 但是第一次运行时会设置第二个线程的定时器中断.如果第二个线程具有更高的优先级,则在中断时唤醒(如果不是,则将其置于就绪状态).堆栈和延迟状态由列表或其他数据结构中的每个任务的OS全局管理.