在重复的 FreeRtos 任务中使用静态函数
Using static functions within a duplicated FreeRtos Task
我正在使用 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, ...)
我 运行 遇到的问题是,我看到的来自每个任务的数据不一致。似乎第二个任务有时在 addSomeNumbers
中使用第一个任务的数据,依此类推。有什么办法可以防止这种情况?
我不相信是这样。
Static functions
只是关于函数的可见范围,而不是关于其中使用的变量的存储class。
如果这是您的实际代码(并且您没有将 num1
等声明为 static
int
,则 num
s 将在每个任务堆栈上重新分配,并且不会看到 "each other"(除非您设法通过一些不相关的错误行为破坏了内核...)。
我正在使用 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, ...)
我 运行 遇到的问题是,我看到的来自每个任务的数据不一致。似乎第二个任务有时在 addSomeNumbers
中使用第一个任务的数据,依此类推。有什么办法可以防止这种情况?
我不相信是这样。
Static functions 只是关于函数的可见范围,而不是关于其中使用的变量的存储class。
如果这是您的实际代码(并且您没有将 num1
等声明为 static
int
,则 num
s 将在每个任务堆栈上重新分配,并且不会看到 "each other"(除非您设法通过一些不相关的错误行为破坏了内核...)。