Control of memory ordering and atomics are officially part of the C
and C++ languages since 2011. GCC already supported this when the ISO
standards was finalized. Microsoft and Clang started supporting it in
2012. So, it's been pretty much portable since 2012. This is 2016.
IMHO, it's time to make use of it. :)


Well, atomics are not an official part of the C standard, only the C++
standard. For the jack ringbuffer, Paul could wrap std::atomic into
a C interface in order to follow a langauge standard, but for all practical
purposes, the __atomic_ functions are probably fine to use directly.