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); }