Hi List,
Reading current kernel git ipc/sem.c I see the following comment:
--
* - The previous code had two flaws:
...
* 2) It did not wake up all zero waiting processes. We try to do
* better but only get the semops right which only wait for zero or
* increase. If there are decrement operations in the operations
* array we do the same as before.
--
I have some questions about this comment.
Most importantly - does this mean that if I have multiple processes
queued inside semop() calls with sem_val = -1 (also, if it matters,
SEM_UNDO flag is set), I can expect to eventually see none of the
queued processes woken up when whoever has the semaphore releases it?
If that's the case, is there any semop best-use example I should be
following for multiple multi-threaded processes sharing multiple
semaphores?
Currently I have some globally reachable semaphores doing semop calls
with SEM_UNDO. They usually work fine with multiple processes waiting
on each other to lock the semaphore, but under certain circumstances a
semaphore will be released and none of the processes waiting on the
semaphore will be woken up.
Thanks in advance,
Tom Burns
Software Developer
Sorry for the double post.
On Nov 26, 2007 12:01 PM, Tom Burns <[email protected]> wrote:
> I have some questions about this comment.
>
> Most importantly - does this mean that if I have multiple processes
> queued inside semop() calls with sem_val = -1 (also, if it matters,
> SEM_UNDO flag is set),
This should read "sem_op = -1" as opposed to "sem_val = -1".
Cheers,
Tom Burns