c-在重复的FreeRtos任务中使用静态函数



我正在使用FreeRtos,并且有一个任务我正在使用多次。我正在任务中调用静态函数。在多次使用此任务期间,静态函数是否会被彼此的数据覆盖或导致某种类型的问题?例如…

static int addSomeNumbers(int x)
{
int num1 = 4;
int num2 = 83;
int num3 = 65;
return x+num1+num2+num3;
}
void SomeTask(void *pvParameters)
{
int localInt = *(int *) pvParameters;
addSomeNumbers(localInt);
//continue
}

我使用这个任务三次

xTaskCreate(SomeTask, "SomeTask0", stackDepth, someNumber0, ...)
xTaskCreate(SomeTask, "SomeTask1", stackDepth, someNumber1, ...)
xTaskCreate(SomeTask, "SomeTask2", stackDepth, someNumber2, ...)

我遇到的问题是,我从每个Task中看到的数据不一致。似乎第二个任务有时会在addSomeNumbers中使用第一个任务的数据,等等。有什么方法可以防止这种情况发生吗?

我认为情况并非如此。

静态函数仅与函数的可见性范围有关,而与其中使用的变量的存储类无关。

如果这是您的实际代码(并且您还没有将num1等声明为staticint,则num将在每个任务堆栈上重新分配,并且不会看到"彼此"(除非您通过一些不相关的错误行为破坏了内核…(。

最新更新