#include #include #include #include int main() { std::atomic count{0}; const auto increment = [&] { for (int i = 0; i < 1000; ++i) { count.fetch_add(1, std::memory_order_relaxed); } }; std::thread worker(increment); increment(); worker.join(); const int total = count.load(std::memory_order_relaxed); assert(total == 2000); const int old = count.fetch_add(5, std::memory_order_relaxed); assert(old == 2000); assert(count.load(std::memory_order_relaxed) == 2005); std::cout << total << ' ' << old + 5 << '\n'; }