Atomic Theory Timeline Scientists

22 Atomic vs. Non-Atomic Operations "An operation acting on shared memory is atomic if it completes in a single step relative to other threads. When an atomic store is performed on a shared memory, no other thread can observe the modification half-complete.

Objects of atomic types are the only C++ objects that are free from data races; that is, if one thread writes to an atomic object while another thread reads from it, the behavior is well-defined. In addition, accesses to atomic objects may establish inter-thread synchronization and order non-atomic memory accesses as specified by std::memory_order.

When can 64-bit writes be guaranteed to be atomic, when programming in C on an Intel x86-based platform (in particular, an Intel-based Mac running MacOSX 10.4 using the Intel compiler)? For exampl...

The definition of atomic is hazy; a value that is atomic in one application could be non-atomic in another. For a general guideline, a value is non-atomic if the application deals with only a part of the value. Eg: The current Wikipedia article on First NF (Normal Form) section Atomicity actually quotes from the introductory parts above.

Atomic Theory Timeline Scientists 4
The AVR-libc user manual in the section backs up my claim that 8-bit types on AVR, when compiled by gcc, already have naturally atomic reads and naturally atomic writes when it implies that 8-bit reads and writes are already atomic by saying (emphasis added):
Atomic Theory Timeline Scientists 5

Which types on a 64-bit computer are naturally atomic in gnu C and gnu ...

Atomic Theory Timeline Scientists 6

But rename() is still atomic in a very important sense: if you use it to overwrite a file, then you will end up with either the old or the new version and nothing else. [update: but as @jonas-wielicki points out in the comments, you need to make sure the file you are renaming actually has up-to-date contents, using fsync() and friends.]

Atomic Theory Timeline Scientists 7