Page 1 of 1

SB-12: Salvo: High Signaling Rate Stops Multitasking

PostPosted: Sun Jan 13, 2002 8:50 am
by Salvo Tech Support
Applies To

Salvo v2.2.1 and earlier.

Description of Problem

If a task waits an event less frequently than the event is signaled, then the task will never yield to the scheduler, and no other tasks can run.

For example, if a task waits a semaphore that is signaled at a very high rate (e.g. from within an ISR), the task will only yield back to the scheduler when the semaphore has "fallen back to zero."

Suggested Workaround

Add a call to OS_Yield() immediately after OS_WaitXyz(), like this:

code:
for (;;) {
OS_WaitSem(SEM_NAME, label1);
OS_Yield(label2);

}

Fixed In

Salvo v3.0.0.