posted October 28, 2005 08:52
Hi Jeff.Event flag processing is a "special case" and is a bit different from all the other event types.
Specifically, if, say, a binSem is signaled, since the binSem's event queue is a priority queue and only a single task can be at the head of a queue (even if multiple tasks are waiting the binSem), then just that one task is made eligible when the binSem is signaled.
eFlags are different because of the fact that multiple tasks can wait on individual bits of an eFlag -- i.e. there is no real sense of priority associated with tasks waiting an eFlag, because a change in any bit must be seen by every task that's watching that bit. Therefore, Salvo has to make all tasks that wait an eFlag eligible whenever the eFlag is signaled. The now-eligible tasks all retain their priorities, of course, with regard to when they'll actually run.
So, yes, the FAQ is talking about all event types except eFlags. eFlags behave slightly differently, and one sees this when more than one task waits a particular eFlag.
------------------