Shared Memory Problem
John F. Haugh II
jfh at rpp386.Dallas.TX.US
Mon Nov 7 01:56:29 AEST 1988
In article <4918 at b-tech.ann-arbor.mi.us> zeeff at b-tech.ann-arbor.mi.us (Jon Zeeff) writes:
>In article <3246 at ucdavis.ucdavis.edu> tuck at iris.ucdavis.edu (Devon Tuck) writes:
>>The closest solution I have found, is to create a host subroutine which
>>passes the buffer array of a program into shared memory, loads it with the
>>new information, and then returns it. The problem with this is, the loop
>>which checks for this new information will most probably be an infinite
>>loop,
>
>If I understand your situation correctly, you want several programs to
>wait on an update of a shared memory segment without sitting in an
>polling loop. One way to do this would be to create a fifo (with
>mknod(1)) for each process and write a byte to each of them when you
>update the segment. The other processes can do a blocking read on the
>fifo. This is just the first thing that came to mind - there are
>probably other ways to do this.
Yes, there are message queues and semaphores. I suggest messages queues
as being the best mechanism, but that's because I don't like semaphores
anyway ;-)
Have the updating process place messages on the queue for each process
which is to be awoken - or you could signal a semaphore, if you are into
the semaphore idiom.
An amusing solution, for those people with file locking but no shared
memory [ Berzerkeley UNIX folks ] is to create a file to hold all the buffers
and use file locking to insure mutual exclusion. Hadn't thought of that
solution ...
--
John F. Haugh II +----Make believe quote of the week----
VoiceNet: (214) 250-3311 Data: -6272 | Nancy Reagan on Richard Stallman:
InterNet: jfh at rpp386.Dallas.TX.US | "Just say `Gno'"
UucpNet : <backbone>!killer!rpp386!jfh +--------------------------------------
More information about the Comp.unix.xenix
mailing list