Composite objects present special problems for concurrency control. If the control is imposed externally to the object, it is likely to be too coarse grained, preventing concurrent executions that would in fact be safe. On the other hand, if the control is imposed internally to the object, it may not be possible, because of information hiding, to reason about the allowable concurrency. This paper seeks to address this problem through the introduction of a notation for expressing exclusion and concurrency. The discussion is restricted to mutexes, read-write locks, and read-write sets, and excludes transaction-based approaches. Exclusion requirements related to accesses to shared objects are internal to a composite object. External to an object, one can talk of concurrency potential, meaning that two operations could be executed concurrently in the object’s environment.
The exclusion requirements are expressed as sets of conflict pairs! on the component interfaces. The language for doing this is quite simple and declarative in nature. The authors establish a calculable Galois connection between the mapping of exclusion requirements outward from the components, and the inward mapping of the potential concurrency, reflecting the object’s environment.
The paper contains two illuminating examples of the approach: one involves the use of different types of locks at different levels, and the other is a graphical user interface server example. These examples provide valuable insight into the potential for the notation for reasoning about concurrency. The paper’s declarative view of concurrency is a useful contribution to an area where more procedural approaches can be difficult to understand.