假设有两个任务 task1();task2(); task1优先级比task2高 具体例子如下: 正常情况下,如果A处把得到的数据message放入邮箱并投递 B处msg收到message的指针,从而实现进程间数据传递,并对数据进行处理; 我的想法是,如果B处pend后C中处理耗时比较长,而A处一直按照自己的节奏在post,比如当post第三次的时候,task2还在处理第一次的数据,那么当task2处理完第一次的数据有,再次去pend,得到的是是不是第三次的数据,也就是说,第二次的数据没有了?被覆盖了? void task1(void *p_arg) { INT8U Message; Message = GetADC();//读取ADC值 while (OS_TRUE) { //将局部变量放入消息邮箱发送 OSMboxPost(Mbox, (void *)(&Message));//A OSTimeDly(10); } }
void task2 (void *p_arg) { INT8U msg
while(OS_TRUE) { msg = *(INT8U *)OSMboxPend(Mbox, 0, &err);//B //任务工作处理 //C } }
|