The CodePlex Parallel STL project is the Microsoft prototype of the Working Draft, Technical Specification for C++ Extensions for Parallelism a proposal to add a set of high level parallel algorithms to the next major version of the ISO C++.

The goal of this project is to provide a realistic implementation that validates the proposal.

Getting Started

Parallel STL provides parallel implementations of the existing STL algorithms with different executions policies. Therefore, if you are familiar with the STL, you will find using Parallel STL straightforward.

So, let's get started. Imagine that you have a program that uses STL in the following way:

using namespace std;
sort(v.begin(), v.end());

Parallelizing it is as simple as adding the par execution policy:

using namespace std::experimental::parallel;
sort(par, v.begin(), v.end());

Of course, parallelizing your code will not always be so easy. Keep this in mind:
  • You need to find bottlenecks in your program that would benefit from parallelism.
  • You need to watch out for data dependencies and potential deadlocks.
  • You might need to rewrite some parts of your program to be eligible for parallelism.

We encourage you to try out the samples we included, as well as, of course, read the technical specification document.

Please also note that this first prototype is missing some functionality that will be added later on. You can find more information here. We also have a few bugs that we’re planning to address, see known issues.

What You Will Need

  • Visual Studio 2013 RTM (or post-RTM VS updates)
  • Windows 7 or later versions


Your feedback is very important and welcome!

To get engaged, you can create a discussion or open and issue. You can also contact us directly: parallelstl at Microsoft dot com.


Other Links

"Parallel STL - Democratizing Parallelism in C++" blog - Artur Laksberg

Last edited Apr 17, 2014 at 12:23 AM by NadaM, version 25