ReadWrite monitor - version 3

ReadWrite monitor - version 3

class ReadWrite {

… // as before

private protected boolean readersturn = false;

synchronized public void acquireRead() {

while (writing || (waitingW>0 && !readersturn))

{ … wait(); … }

++readers;

}

synchronized public void releaseRead() {

--readers; readersturn=false;

if(readers==0) notifyAll();

}

synchronized public void acquireWrite() {… }

synchronized public void releaseWrite() {

writing = false; readersturn=true;

notifyAll();

}

}

Demo

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