Threads vs Tasks
Explore the key differences between threads and tasks in modern C++ concurrency. Understand how threads use shared variables and join operations, while tasks leverage promises and futures for communication and synchronization. Learn how tasks handle exceptions and results differently from threads, and gain insight into blocking calls and safe communication methods.
We'll cover the following...
Threads are very different from tasks. Let’s see how by looking at this piece of code first:
The child thread t and the asynchronous function call std::async to calculate both the sum of 2000 and 11. The creator thread gets the result from its child thread t via the shared variable res and displays it in line 14. The call std::async in line 16 creates the data channel between the sender (promise) and the receiver (future). Following that, the future asks the data channel with fut.get() (line 17) for the result of the calculation; this fut.get call is blocking.
Based on ...