One of the most natural, elegant, and efficient mechanisms for synchronization and communication, especially for systems with shared memory, is the  monitor . Over the past twenty years many kinds of monitors have been proposed and implemented, and many modern programming languages provide some form of monitor for concurrency control. This paper presents a taxonomy of monitors that encompasses all the extant monitors and suggests others not found in the literature or in existing programming languages. It discusses the semantics and performance of the various kinds of monitors suggested by the taxonomy, and it discusses programming techniques suitable to each.
['Peter A. Buhr', 'Michel Fortier', 'Michael H. Coffin']
Monitor classification