What do threads, atomic variables, mutexes, and conditional variables have in common? They are the basic building blocks of any concurrent application in C++, which are a big challenge even for the experienced C++ programmers.
This massively changed with C++17 and even more with C++20/23.
What did we get with C++17, what can we hope for with C++20/23?
With C++17, most of the standard template library algorithms are available in sequential, parallel, and vectorised variants. With the upcoming standards, we can look forward to executors, transactional memory, significantly improved futures and coroutines. These are just the highlights from the concurrent and parallel perspective.
Thus there is hope that in the future C++ abstractions such as executors, transactional memory, futures and coroutines will be used and threads, atomic variables, mutexes and condition variables will be just implementation details.