I’m not an expert or anything, but here’s what I know:
std::atomicsimply says that callingloadandstore(and a few other operations) concurrently is well-defined. An atomic operation is indivisible – nothing can happen ‘in-between’.- I assume
std::atomicis based off ofboost::atomic. If you can, usestd, otherwise useboost. - They are both portable, with the
stdbeing completely so, however your compiler will need to support C++11 - Likely
std::atomic_bool. You should not need to use volatile.
Also, I believe load/store differs from operator=/operator T only .load/store are atomic
Nevermind. I checked the standard and it appears that the operators are defined in terms of load/store/etc, however they may return different things.
Further reading:
- http://en.cppreference.com/w/cpp/atomic/atomic
- C++11 Standard
- C++ Concurrency in Action