vTaskSuspend 2 Tasks

yuhleon wrote on Tuesday, November 20, 2007:

I want to suspend 2 tasks at the same time , but I cannot call vTaskSuspend twice .
example :

vTaskSuspend( Task1 );
vTaskSuspend( Task2 );

vTaskResume( Task2 );
vTaskResume( Task1 );

How can I suspend 2 tasks at the same time ?

Thanks!

rtel wrote on Tuesday, November 20, 2007:

The API function only permits the suspension of one task at a time.  If you want to atomically suspend two tasks then place the two calls in a critical section - but note this will only work if not suspending the current task as a critical section does not prevent a context switch.

Likewise, when resuming the tasks you would have to ensure that both tasks have lower priority than the task resuming them, otherwise a context switch would occur.  This could be achieved by temporarily raising the priority of the calling task to above the priorities of the tasks being resumed.

Regards.