I've been lead to believe that using std::async with the returned future is basically just a simplified way of using mutexes, where the actual handling of the new std::thread and the locking/unlocking of the mutex is abstracted away by the async function and the future.
I'm fairly new to multi-threading concepts - is this the case? Am I understanding something incorrectly?
Edit: I left out that this abstraction would obviously make use of an std::condition_variable