- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
parallel_for_each
的形式是:
Concurrency::parallel_for_each(start_iterator, end_iterator, function_object);
但是 parallel_for
也是类似的形式:
Concurrency::parallel_for(start_value, end_value, function_object);
那么在多核编程中使用的Concurrency::parallel_for
和Concurrency::parallel_for_each
算法有什么区别?
最佳答案
我不知道你在说什么库,但看起来这个库需要迭代器:
Concurrency::parallel_for_each(start_iterator, end_iterator, function_object);
并且可能与此具有相同的效果(尽管不一定以相同的顺序):
for(sometype i = start_iterator; i != end_iterator; ++i) {
function_object(*i);
}
例如:
void do_stuff(int x) { /* ... */ }
vector<int> things;
// presumably calls do_stuff() for each thing in things
Concurrency::parallel_for_each(things.begin(), things.end(), do_stuff);
另一个采用值,因此它很可能具有与此类似的效果(但同样,没有保证顺序):
for(sometype i = start_value; i != end_value; ++i) {
function_object(i);
}
尝试运行这个:
void print_value(int value) {
cout << value << endl;
}
int main() {
// My guess is that this will print 0 ... 9 (not necessarily in order)
Concurrency::parallel_for(0, 10, print_value);
return 0;
}
编辑:您可以在 Parallel Algorithm references 中找到对这些行为的确认。 .
关于c++ - MSVC 并发运行时中的 parallel_for_each 和 parallel_for 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8499245/
要并行执行一个循环,我正在使用: int testValues[16]={5,2,2,10,4,4,2,100,5,2,4,3,29,4,1,52}; parallel_for (1, 100, 1,
我有 3 次嵌套循环,而与最内层循环相比,两个外部循环只循环了很少的次数。像这样: for (int i = 0; i < I; i++) { for (int j = 0; j <
我正在尝试学习如何使用 TBB,因此我正在修改我发现的示例程序,该程序旨在计算复数数组的幂。最初,它是将一个数组传递到 parallel_for 循环中,但我试图对其进行更改,以便它传递一个 vect
我刚刚在新的 OpenCV 2.4.3 中看到他们添加了一个通用的 parallel_for。所以按照这个 example ,我尝试自己实现。我用我的代码实现了所有功能,但是当我对它的处理进行计时与使
我是 C++ 的新手,因此如果这是一个愚蠢的问题请原谅,但我没有在互联网上找到我正在寻找的很好的例子。 基本上,我使用 parallel_for 循环来查找 2D 数组中的最大值(以及其间的一系列其他
我已经使用opencv人脸检测器编写了多 View 人脸检测代码。我在一个图像上运行五个检测器(针对不同的姿势 Angular 进行训练),然后权重检测图像中的人脸。我已经使用TBB parallel
我正在尝试学习一些关于 TBB 的知识,但我怀疑我无法解决它。 Afaik,TBB 使用线程池,因此它不需要一直创建线程。如果你使用 tbb::parallel_for,它是使用这个线程池还是创建新线
我正在制作一个简单的 native MFC 应用程序,我正在使用并发命名空间来执行一个简单的并行程序(绘制一个 Mandelbrot 集)。到目前为止,该程序非常基础,单击一个按钮并行绘制,另一个按钮
我对并行循环中的局部值和更新全局变量有疑问。 例如,在伪代码中:我在一个很长的 vector 中搜索最大值。我可以像这样循环执行: int max; for(i ...) { if (max
我一直在研究并行循环 (C++11) 并使用 MS visual studio 2013 对其进行测试。我很清楚它们(尤其是 lambdas),它们非常酷。 但我担心的是我必须调用一个函数来执行简单的
我有一段代码,我正在使用 tbb::parallel_for 对一个循环进行多线程处理,该循环由主线程调用。在那个循环中,我需要主线程来更新 UI 以反射(reflect)进度。据我观察,tbb::p
我想使用 TBB parallel_for 我已将其添加到我的代码中进行测试 #include #include #include std::vector> commands; auto n =
我最初有一个单线程循环,它遍历图像的所有像素,并且可以对数据进行各种操作。 我使用的库规定从图像中检索像素必须一次一行完成。为此,我 malloc 一个内存块,它可以容纳一行像素(BMM_Color_
摆脱 parallel_for 的最有效方法是什么?为了摆脱标准的 for 循环,我们执行以下操作: for(int i = 0; i < 100; i+) { bool bValue = D
我有一个数据集,我想以 interval_size 大小的间隔使用 tbb::parallel_for。我的仿函数消耗的每个区间都应该是 interval_size,最后一个部分区间除外,当 inte
我刚刚学会了如何并行使用一个函数。以下代码行计算索引的平方值并将其放入数组(称为平方)中的该索引处。 parallel_for 函数在 Visual Studio 2010 中可用,作为标题下并发命名
我使用 OpenMP (OMP) 并行化 for 循环。但是,OMP 似乎会将我的 for 循环划分为相等的间隔大小,例如 for( int i = 0; i < n; ++i ) { ... }
如何限制使用的线程数 Concurrency::parallel_for(0, 100, 1, [&](int k) 我看到了调度程序/任务的想法,我没有在并行内部使用它,因为有很多逻辑,我需要传递参
我有一个像这样的模板可变函数需要与 TBB 并行化 parallel_for功能 template void func(T1 t1, T2 t2, std::size_t n, T3... t3) 我
我有一个 for 循环,我想将其转换为 parallel_for fnc 调用。我的代码满足此转换成功的所有条件(在 Parallel_Programming_with_Microsoft_Visua
我是一名优秀的程序员,十分优秀!