Last Updated: May 17, 2026
std::async is the shortest path from "I have a function" to "run it in parallel and give me the result back". You hand it a callable, you get a std::future, and the standard library handles the thread plumbing. The previous chapter covered std::future and std::promise as the building blocks. This chapter covers the high-level launcher that wires them up for you, the launch policies that decide whether a new thread is actually spawned, and the destructor gotcha that has cost more debugging hours than it should have.