Executing functions asynchronously
Threads enable us to run multiple functions at the same time; this helps us take advantage of the hardware facilities in multiprocessor or multicore systems. However, threads require explicit lower-level operations. An alternative to threads is tasks, which are units of work that run in a particular thread. The C++ standard does not provide a complete task library, but it enables developers to execute functions asynchronously on different threads and communicate results back through a promise-future channel, as seen in the previous recipe. In this recipe, we will see how to do this using std::async()
and std::future
.
Getting ready
We will use futures, so read the previous recipe to get a quick overview of how they work. Both async()
and future
are available in the std
namespace in the <future>
header.
For the examples in this recipe, we will use the following functions:
void do_something() { // simulate long running operation { ...