ReadWrite monitor - version 2

ReadWrite monitor - version 2

class ReadWrite {

… // as before

private protected int waitingW = 0; // no of waiting Writers.

synchronized public void acquireRead() {

while (writing || waitingW>0) { … wait(); … }

++readers;

}

synchronized public void releaseRead() {… }

synchronized public void acquireWrite() {

while (readers>0 || writing) {

++waitingW; … try{ wait(); … --waitingW; }

writing = true;

}

synchronized public void releaseWrite() {… }

}

Demo

Previous slide Next slide Back to the first slide View Graphic Version