#include #include #include #include int countdown(std::atomic& jobs) { int done = 0, nr; while ( (nr = int(--jobs)) >= 0) ++done; return done; } int main() { int n = 1000000; std::atomic jobs(n); auto mode = std::launch::async; auto cnt1 = std::async(mode, countdown, std::ref(jobs)); auto cnt2 = std::async(mode, countdown, std::ref(jobs)); int a = cnt1.get(), b = cnt2.get(); std::cout << a << " + " << b << " = " << a+b << '\n'; assert(a+b == n); }