Readers and writer programming with semaphores.
The C program below is from our textbook.
Chapter-5 pg. 271 in my textbook.
Page 243 in the 9th Edition hard-bound textbook.
The semaphores are
similar to POSIX .
semWait() means to wait for sem to be greater than zero, then decrement.
semSignal() means increment the semaphore.
Readers have priority...
int readcount = 0;
semaphore x = 1;
semaphore wsem = 1;
void reader()
{
while (true) {
semWait(x);
readcount++;
if (readcount == 1)
semWait(wsem);
semSignal(x);
READUNIT();
semWait(x);
readcount--;
if (readcount == 0)
semSignal(wsem);
semSignal(x);
}
}
void writer()
{
while (true) {
semWait(wsem);
WRITEUNIT();
semSignal(wsem);
}
}
void main()
{
readcount = 0;
parbegin(reader, writer);
}