cpprussia C++ Russia 2019 (19.04.2019)

Concurrency and parallelism in C17 and C20/23

img

Threads, atomic variables, mutexes, and conditional variables 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. Let’s discuss what did we get with C++17 and what can we hope for with C++20/23.

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.