Best way to block a task?

raedbenz wrote on Monday, December 07, 2009:

I need to run a task after acertain event occurs (e.g. button push)…
so what is more efficient with the minimum cpu overheads and more reliable, to use **vTaskSuspend** from the first call to of the task, or a semaphore with max delay. ?

davedoors wrote on Monday, December 07, 2009:

Use a binary or counting semaphore with max delay. If you set INCLUDE_vTaskSuspend to 1 in FreeRTOSConfig.h then max delay will be an indefinite delay.

Do not use vTaskSuspend() for event processing. It does not latch events so it is easy to miss them.