Edge triggered queue

beginend1 wrote on Thursday, January 09, 2014:

Problem is to solve classic race condition in single data producer and multiple consumer model in double buffering.
1st task is generating some data (eg. gsensor)
other tasks are reading those data.

Target is to inform all waiting tasks that there is new data, or pass data directly to those tasks and do not “miss” any sample or inform task that he missed a data and return old one.

Is there a simple way to do that in FreeRTOS 7.5.2 without creating a queue for every task? Edge triggered everwitable queue would be very handy here.

edwards3 wrote on Thursday, January 09, 2014:

It might be something you can do in version 8 using an event group. You could use the xQueueOverwrite() function to post a message, have each task use xQueuePeek() to view the message, and the xEventGropuSync() function to create a synchronisation point after each task has read the new data. http://www.freertos.org/xEventGroupSync.html