Access to shared data is an essential part of distributed and concurrent computing, and algorithms to arbitrate concurrent accesses are at the heart of distributed operating systems. The algorithm of choice depends heavily both on the hardware support and on the hardware configuration. If resiliency is desired, then wait-free constructions will guarantee that inopportune processor failures will not halt other parts of the systems.