Despite their popularity, mutual exclusion locks are far from an optimal synchronization mechanism.
We have implemented two versions of the compiler--one version generates code that uses mutual exclusion locks to make operations execute atomically; the other generates code that uses optimistic synchronization.
Experimental Results: It presents a complete set of experimental results that characterize the overall impact of using optimistic synchronization instead of mutual exclusion locks.
To generate code that uses mutual exclusion locks, the compiler must augment the data structures with locks.
The basic atomic operations in these applications update a single word of memory, and all of these atomic operations can use optimistic synchronization instead of mutual exclusion locks.
Experience with operating systems kernels, however, suggests that more advanced primitives such as double compare and swap may make it possible to recode these computations to use optimistic synchronization instead of mutual exclusion locks [Greenwald and Cheriton 1996; Massalin and Pu 1989].