Semaphore server (correction)

From: Joerg Wittenberger <joerg.wittenberger_at_nospam.org>
Date: Mon Jan 09 1995 - 07:05:53 PST

Hi,

I guess I should have spend a night before I posted the server based
sema code yesterday.

There was a questionable design decision in, which turned out to be a
bug not a feature. I happened to thing it would be useful to have a
semaphore destroyed when the creating thread disconnects, but this is a
really bad idea in multithreaded env's. So I removed it.

Instead I added a sema_get which yield the current value. Also I added
sema_[pv]n, which takes a positive integer as the second value and
plays the role of n p/v's at once.

sema_pn? will now allways return the old value of the sema. If it
returns zero you failed to get the sema, maybe due to a signal. I'm not
sure wether it would be better to add a loop around the msg_send in
the semalib.c.

As a side note: my weak english lead to a pun in the code.

BTW: it shouldn't be too hard to mount the server anywhere (but don't
open it at the moment :-() and write a small program which calls the
sema functions on the port of a specified file. Then you have sema's
ready in shell scripts.

Sorry for the inconvenience. Here is the corrected code:

begin 644 sema.tz
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
J5:M:U:I6M:I5K6I5JUK5JE:UJE6M:E6K6M6J5K6J/5W[#\^/2F(`4```
`
end

-----------------------------------------------------------------------------
Joerg Wittenberger | email: joerg.wittenberger@inf.tu-dresden.de
Rietzstr. 32b |
01139 Dresden |
Germany | PGP: D4 B2 DA AE C3 02 50 9C 45 3E AD 99 C1 1A 8E F8

WWW: <a href=http://www.inf.tu-dresden.de:~jw6/top.html> (click here) </a>
Received on Mon Jan 9 07:05:09 1995

This archive was generated by hypermail 2.1.8 : Thu Sep 22 2005 - 15:12:11 PDT