How to block task forever with a Queue()?

nobody wrote on Tuesday, November 08, 2005:

Hi all,

I want to block a task forever with xQueueReceive(…, … , SomethingLikeWAIT_FOREVER).
Only data posted to the Queue should wake up the task. I do not want to change task priority.

Is there a simpler method as checking the uxQueueMessagesWaiting() and when no data received calling the taskYIELD() ?


nobody wrote on Tuesday, November 08, 2005:

The normal way to do this is:

while( !xQueueReceive( Queue, buffer, portMAX_DELAY ) );

When the delay exists because something has been received then the while loop will also exit.

This topic has come up before.  It was a design decission not to have a WAIT_FOREVER to keep the RAM usage of the compiler to a minimum and the source code as small as possible.