On the power of locking

We study the expressive power of locking primitives, as measured by ther ability to implement different concurrency control principles. We give a necessary and sufficient condition for a concurrency control principle (abstractly, a set of histories) to be implementable by binary semaphores. Also, we characterize exactly those sets of locking primitives that are no more powerful than binary semaphores.