
58 Introduction to Concurrency in Programming Languages
systems. The key concept behind monitors is an encapsulation of data and
procedures related to a component within a system that requires synchronized
control when accessed by multiple callers. In the most basic sense, monitors
provide an abstraction layer above basic semaphores, coupling the semaphore
variables with the operations and data that the semaphore is used to protect.
Monitors provide more than this though, through the availability of condition
variables.
Monitors are an early instance of what object-oriented programmers refer
to as encapsulation. The inventors of monitors recognized