mutex and wrt are each initialized to 1, and readcount is initialized to 0.
Writer Process | Reader Process |
---|---|
wait(wrt);         . . .         writing is performed         . . . signal(wrt); |
wait(mutex);         readcount := readcount + 1;         if readcount = 1 then wait(wrt); signal(mutex);         . . .         reading is performed         . . . wait(mutex);         readcount := readcount - 1;         if readcount = 0 then signal(wrt); signal(mutex); |