taskVarAdd对同一个变量使用了两次

时间:2009-06-23 06:17:06

标签: vxworks

我使用taskVarAdd()API将一个全局结构添加到我的任务中。

但在某些情况下,使用taskVarAdd()API将相同的全局结构再次添加到同一任务中。 [即,从同一变量的任务中调用taskVarAdd()两次]。

此结构将维护该任务的taskID,消息队列ID。

我的问题:

  1. 如果我们在任务中两次调用taskVarAdd()同一个变量,那么行为是什么?
  2. 第一个添加的struct变量是否会被第二个变量覆盖?{我觉得这会被覆盖]

1 个答案:

答案 0 :(得分:0)

最简单的方法是做一个简单的测试用例。

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有效