c++中是否有parallel_for的boost函数?
Is there a boost function for parallel_for in C++?
我需要做parallel_for。在标准c++库或Boost中是否有一个简单的实现?我没有找到它。
顺便说一下,我正在使用Ubuntu。所以我不想要微软的库
从c++ 17开始,我们使用"execution policy"参数将大多数算法作为潜在的并行版本:https://en.cppreference.com/w/cpp/algorithm/execution_policy_tag_t
对于一个简单的For -each,算法将是for_each
: https://en.cppreference.com/w/cpp/algorithm/for_each
std::vector<int> v = get_tons_of_values();
std::for_each(std::execution::par, std::begin(v), std::end(v), [](int i) {
work(i);
});
在这个例子中,我们"要求"并行执行lambda。
请注意,算法将自行决定是否有效地并行运行以及如何并行运行。例如,如果没有足够的值使并行运行的成本值得,那么它将不会在大多数实现上并行运行。参考您的标准库实现文档,了解它们将使用的启发式方法。
听起来您正在寻找openmp提供的功能:
#pragma omp parallel for
for (i = 0; i < n; ++i)
// do some work
然后使用-fopenmp
标志进行编译,如果您使用gcc。
OpenMP对于相对"愉快"的并行问题来说是非常棒的。
我个人会仔细研究一下OpenMP。这里有一个很好的链接,可以帮助你开始,并解释如何编写并行for循环。
http://bisqwit.iki.fi/story/howto/openmp/免责声明:我不确定标准c++(包括最新的标准),也从未使用过boost。也就是说,在过去需要进行并行处理时,我使用过OpenMP。
相关文章:
- 我正在将一个 std::string 传递给一个 boost 函数,该函数对该类型进行常量引用,但该值发生了变化
- 如何将Boost ::函数对象与所有参数绑定
- 从boost ::函数中提取参数
- Boost绑定和Boost函数,将带有参数的函数存储在向量中,然后执行它们
- 如何获得返回自身的boost::函数(或其他通用函数包装器)
- Boost函数赋值引发异常
- 正在从带有参数的new_ptr的boost::lambda::bind中获取boost::函数
- boost::函数与函数指针
- boost::函数参数定义不起作用
- 将boost::函数克隆到指针中,并用该指针调用封装的函数
- 使用boost::函数绑定到重载方法
- 如何使用boost函数来转换参数类型
- Boost::函数绑定的成员函数无效
- boost::函数与函数模板
- 如何将两个独立的boost::bind()组合为一个boost::函数
- boost元组导致boost绑定/boost函数出现问题
- 为什么某些 Boost 函数不需要以命名空间为前缀
- 从函数指针创建boost::函数的跨平台方法
- 传递boost::函数,该函数接受一个模板实参作为默认为NULL的形参
- 对模板使用boost::函数