首页 > 代码库 > UCOS中的消息队列并不是真正意义上的队列

UCOS中的消息队列并不是真正意义上的队列

 

UCOS中的消息队列并不是真正意义上的队列,它只是发送了想要发送数据的指针,这个时候,如果发送多个同一个变量的不同数据,那么数据就相当于被覆盖了.

解决办法:

  定义一个缓存数组buffer[i];

  更改变量i的数值,就可以实现一个变相的FIFO,因为每次发送的变量的指针是不同的.

  i++;

  i %= bufsize;

  buffer[ ( i + bufsize - 1 ) % bufsize ];  //此处是取的上一个数据,当前数据直接取buffer[i]即可.

UCOS中的消息队列并不是真正意义上的队列