Monitor Invariant - Buffer

Monitor Invariant - Buffer

A monitor invariant is an assertion which is true whenever no thread is executing in the monitor. It is permitted to be false while a a thread is executing but must be true when the thread leaves the monitor by method return or wait().

A suitable monitor invariant for Buffer which satisfies the safety properties is:

Buffer Invariant: [0 count size]

The count = 0 initialisation establishes the invariant.

synchronized public void put(Object o) {

// [0 count size]

while (count==size) { wait() }

// [0 count < size]

++count;

// [0< count size]

notify(); // [0

}

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