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() {… }
}