An umbrella term for methods and algorithms to synchronize multithreaded environments or other forms of distributed system without using locks.

An umbrella term for methods and algorithms to synchronize multithreaded environments or other forms of distributed system without using locks.

The necessity for lock-free software architectures arises mainly from performance and scalability issues with using locks for synchronization: Because of the atomicity requirements, Locks involve slow system calls and if used improperly, can easily lead to race conditions and frequent wait conditions.

Examples of lock-free system architectures include Hardware-Transactional Memory (the software variant STM might use locks for synchronization) or the Communicating sequential processes first described by C. A. R. Hoare