What are atomics?
What are atomics? Atomics, or, more precisely, an atomic operation, is an operation which happens in one go, not in steps. It is like an atom --indivisible (although an atom is technically divisible, let's not destroy the analogy).
An atomic operation is a single operation as seen by all other working threads. It just happens immediately. It is like the execution of one machine code, which is either not done yet or is completed. There is no in-between.
In a nutshell, something being atomic means that only one operation can be done on it at a time. For example, updating a variable can be made atomic. This can be used to avoid a race condition.
Information about lock and mutex
When I said updating a variable can be made atomic, it means that during the time a thread is accessing that memory, no other thread should be allowed to access it. This is only possible when you introduce a lock or a mutex (mutual exclusion) on the variable being accessed. This way, the other thread knows...