我正在阅读std::algorithm文档,该文档在cppreference.com上发布,并注意到许多我尚未使用的很酷的东西都有C++17标签。其中引起我最大兴趣的是新的执行策略。从阅读中了解到,只需指定执行策略,就可以使任何
如果我想让这个程序支持多线程,只需要一行代码即可实现。
然而,当我第一次尝试这样做(使用
for_each
循环变成多线程。
例如,我有一个程序,它输出一个带有2D图形的图像。int main(){
std::for_each(
img.buffer().begin(),
img.buffer().end(),
renderer(
{-0.5, 0.0, 2.666, 2.0, M_PI / 2.0, 0.0},
img,
16
)
);
fout << img;
}
如果我想让这个程序支持多线程,只需要一行代码即可实现。
int main(){
std::for_each(
std::execution::par_unseq, // c++17 feature
img.buffer().begin(),
img.buffer().end(),
renderer(
{-0.5, 0.0, 2.666, 2.0, M_PI / 2.0, 0.0},
img,
16
)
);
fout << img;
}
然而,当我第一次尝试这样做(使用
g++ -std=c++17
)时,我收到了一个错误,告诉我‘std::execution’ has not been declared
,所以我尝试添加#include <execution>
,但是它显示execution: No such file or directory
。我也尝试过使用#include<experimental/algorithm>
代替#include<algorithm>
,但结果相同。我该如何使用这个新功能?