0

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

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

该结构将维护该任务的任务 ID、消息队列 ID。

我的问题:

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

1 回答 1

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

于 2009-06-24T04:28:34.903 回答