Параллельность в Clang
Поддерживается ли в Clang (точнее в libc++) какая либо параллельность?
В GCC (точнее в libcstd++), до C++17 был Parallel Mode с openMP, а после C++17 в STL появилась поддержка Parallel Standard Algorithms, используящая execution policies и технологию TBB.
Почему же в Clang (libc++) ничего нет? Более того, в последних версиях Clang стало невозможно использовать -stdlib=libcstd++, по крайней мере в macOS. Прикрутить тот же tbb к Clang (libc++) не выйдет. Неужели остаются только POSIX потоки и все? Я ничего не пропустил?
Например, этот код, использующий параллельную версию алгоритма std::sort, скомпилирует в GCC, но не скомпилирует в Clang(libc++):
#include <iostream>
#include <vector>
#include <numeric>
#include <algorithm>
#include <random>
#include <iterator>
#include <execution>
int main(int argc, char const *argv[])
{
std::vector<int> v(10);
std::iota (std::begin(v), std::end(v), 0);
std::random_device rd;
std::mt19937 g(rd());
std::shuffle(v.begin(), v.end(), g);
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';
std::sort(std::execution::par, v.begin(), v.end()); // Execution policy of parallel algorithms
std::copy(v.begin(), v.end(), std::ostream_iterator<int>(std::cout, " "));
std::cout << '\n';
return 0;
}