What are Monitors

A programming language construct, very similar to what we call today objects.

Consists of:

  • General purpose variables
  • Methods
  • Initialization code (constructor)
  • Condition variables (can be either wait or signal)

Example Declaration

Monitor M {
	int a, b, c;
	condition x, y, z;
	fn1(...);
	fn2(...);
	...
	fnm(...);
}

Hoare Monitors

Assume thread Q is waiting on condition Assume thread P is in the monitor Assume thread P calls .signal P gives up monitor, P blocks Q takes over monitor, Q runs Q finishes up, gives up monitor P takes over monitor, resumes

Mesa Monitors (Per Brinch Hansen’s Monitors)

Assume thread Q waiting on condition Assume thread P is in the monitor Assume thread P calls .signal P continues, finishes Q takes over monitor, runs Q finishes, gives up monitor