https://timsong-cpp.github.io/cppwp/n4861/intro.races#8
An evaluation A is dependency-ordered before an evaluation B if (8.1) A performs a release operation on an atomic object M, and, in another thread, B performs a consume operation on M and reads the value written by A, or (8.2) for some evaluation X, A is dependency-ordered before X and X carries a dependency to B. [ Note: The relation “is dependency-ordered before” is analogous to “synchronizes with”, but uses release/consume in place of release/acquire. — end note ]
¿"Atomic object" is "something special" in C++ or is it just a name given to any variable in the context (when we talk about concurrency in c++) of concurrency in C++?
If it is something special, can you tell me what it is?
In the simplest possible terms, an atomic object is an object of type
std::atomic<T>orstd::atomic_ref<T>.These objects provide special operations for fine-grained atomic access to data that are subject to special guarantees from the language with regards to inter-thread synchronization, which form the basis of the C++ memory model.
See [intro.multithread] and [atomics.general] as the relevant sections in the latest draft standard.