When using std::async with launch::async in a for loop, my code runs serially in the same thread, as if each async call waits for the previous before launching. In the notes for
As you noticed yourself, the future
d-tor of future
returned by std::async
blocks and waits for the async operation to finish (for the future
to become ready
).
In your case, cache
object goes out of scope at each of the loop iterations and thus gets destructed, together with the future
it holds, so you see the mentioned effect.