Chapter 10. 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.
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; std::sort(std::execution::par,my_data.begin(),my_data.end()); !@%STYLE%@! {"css":"{\"css\": \"font-weight: bold;\"}","target":"[[{\"line\":1,\"ch\":10},{\"line\":1,\"ch\":29}]]"} !@%STYLE%@!