Introduction to std::packaged_task
This lesson gives an introduction to std::packaged_task which is used in C++ for multithreading.
std::packaged_task
pack
is a wrapper for a callable in order for it to be invoked asynchronously. By calling pack.get_future()
you get the associated future. Invoking the call operator on pack (pack()
) executes the std::packaged_task
and, therefore, executes the callable.
Dealing with std::packaged_task
usually consists of four steps:
I. Wrap your work:
std::packaged_task<int(int, int)> sumTask([](int a, int b){ return a + b; });
II. Create a future:
std::future<int> sumResult= sumTask.get_future();
III. Perform the calculation:
sumTask(2000, 11);
IV. Query the result:
sumResult.get();
Here is an example showing the four ...