NOTE: std::atomic<double> isn't guaranteed to be 'lock free' and therefore might include a std::mutex internal. If so, then we can't assume sizeof(double) == sizeof(std::atomic<double>)