Atomic operations
A computation operation is considered to be atomic if it appears to the rest of the system to occur instantaneously. Atomicity guarantees indivisible and uninterruptible execution of the operation initiated. Most CPU instruction set architectures define instruction opcodes that can perform atomic read-modify-write operations on a memory location. These operations have a succeed-or-fail definition, that is, they either successfully change the state of the memory location or fail with no apparent effect.These operations are handy for manipulation of shared data atomically in a multi-threaded scenario. They also serve as foundational building blocks for implementation of exclusion locks, which are engaged to protect shared memory locations from concurrent access by parallel code paths.
Linux kernel code uses atomic operations for various use cases, such as reference counters in shared data structures (which are used to track concurrent access to various kernel data structures...