我使用 taskVarAdd() API 将全局结构添加到我的任务中。
但是在某些情况下,使用 taskVarAdd() API 再次将相同的全局结构添加到相同的任务中。[即,taskVarAdd() 从同一个变量的任务中被调用两次]。
此结构将维护该任务的任务 ID、消息队列 ID
以下是 Benoit 编写的用于解释该场景的示例程序,
诠释v1;
无效的电视()
{
诠释 i = 0;
v1 = 1;
taskVarAdd(0, &v1);
v1 = 2;
taskVarAdd(0, &v1);
v1 = 3;
任务延迟(1);
printf("初始 v1 = %d\n", v1);
for(i = 0;i<10;i++)
{
v1++;
taskDelay(60);
printf("v1 = %d\n", v1);
}
}
当我使用 tornado 测试代码时,每次执行程序时都会得到不同的结果
//第一次尝试 -> tv1
初始 v1 = V1 = 3
V1 = 3
V1 = 2
V1 = 4
V1 = 4
V1 = 3
V1 = 5
V1 = 5
V1 = 5
V1 = 6
//第二次尝试
- >电视1
初始 v1 = V1 = 1
V1 = 3
V1 = 4
V1 = 2
V1 = 4
V1 = 5
V1 = 3
V1 = 5
V1 = 6
但是当我评论第二个 taskVarAdd() 并对其进行测试时,我得到了一致的预期结果,如下所示
//第一次尝试
- >电视1
初始 v1 = 3
V1 = 4
V1 = 5
V1 = 6
V1 = 7
V1 = 8
V1 = 9
V1 = 10
V1 = 11
V1 = 12
V1 = 13
//第二次尝试
- >电视1
初始 v1 = 3
V1 = 4
V1 = 5
V1 = 6
V1 = 7
V1 = 8
V1 = 9
V1 = 10
V1 = 11
V1 = 12
V1 = 13
我们正在使用 VxWork 5.5
我的问题:
在同一个任务中为同一个变量使用两个 taskVarAdd() 是否正确?
如果两个 taskVarAdd() 用于同一个任务中的同一个变量,会有什么行为?
请解释您的程序流程