Here is the documentation for std::atomic: http://en.cppreference.com/w/cpp/atomic/atomic
Reading other questions what I've gathered is it generates some sort of special machine instructions (i.e. lock add) and that as a result you don't have to use a mutex around the variable.
What I want to know is how it works and what are the limitations to using them?