我使用 taskVarAdd() API 将全局结构添加到我的任务中。
但是在某些情况下,使用 taskVarAdd() API 再次将相同的全局结构添加到相同的任务中。[即,taskVarAdd() 从同一个变量的任务中被调用两次]。
该结构将维护该任务的任务 ID、消息队列 ID。
我的问题:
- 如果我们在一个任务中为同一个变量调用 taskVarAdd() 两次,会发生什么行为?
- 第一个添加的struct变量是否会被第二个变量覆盖?{感觉这个会被覆盖]
我使用 taskVarAdd() API 将全局结构添加到我的任务中。
但是在某些情况下,使用 taskVarAdd() API 再次将相同的全局结构添加到相同的任务中。[即,taskVarAdd() 从同一个变量的任务中被调用两次]。
该结构将维护该任务的任务 ID、消息队列 ID。
最简单的方法是做一个简单的测试用例。
int v1;
void tvl()
{
v1 = 1;
taskVarAdd(0, &v1);
v1 = 2;
taskVarAdd(0, &v1);
v1 = 3;
taskDelay(1);
printf("Initial v1 = %d\n", v1);
for(;;)
{
v1++;
taskDelay(60);
printf("v1 = %d\n", v1);
}
}
运行测试代码会为 v1 生成以下值:
Initial v1 = 2
1 3 3 2 4 4 3 5 5 4...
具有单个 taskVarAdd 的相同代码给出了 1 2 3 4 ... 的预期结果
PS:你没有指定VxWorks的版本,所以我说的对Vxworks 6.x有效