Chapter 10. Parallel algorithms


This chapter covers

  • Using the C++17 parallel algorithms

In the last chapter we looked at advanced thread management and thread pools, and in chapter 8 we looked at designing concurrent code, using parallel versions of some algorithms as examples. In this chapter, we’ll look at the parallel algorithms provided by the C++17 standard, so let’s start, without further ado.

10.1. Parallelizing the standard library algorithms

The C++17 standard added the concept of parallel algorithms to the C++ Standard Library. These are additional overloads of many of the functions that operate on ranges, such as std::find, std::transform and std::reduce. The parallel versions have the same signature as the “normal” single-threaded versions, except for the addition of a new first parameter, which specifies the execution policy to use. For example:

std::vector<int> my_data;

{"css":"{\"css\": \"font-weight: bold;\"}","target":"[[{\"line\":1,\"ch\":10},{\"line\":1,\"ch\":29}]]"}

10.2. Execution policies

10.3. The parallel algorithms from the C++ Standard Library