When we have multiple threads, we can use two close techniques to optimize the execution time: parallel execution and asynchronous execution. We've seen how parallel execution works in a previous section; what about asynchronous calls?
First, let's remind ourselves what asynchronous calls are. We would like to make a call, continue normally on the main thread, and get the result back at some point in the future. To me, this sounds like a perfect job for functions. We just need to call functions, let them execute, and talk to them again after a while.
Since we've talked about the future, let's talk about the future construct in C++.