- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
要并行执行一个循环,我正在使用:
int testValues[16]={5,2,2,10,4,4,2,100,5,2,4,3,29,4,1,52};
parallel_for (1, 100, 1, [&](int i){
int var1;
for (var1=1; var1<=20000; var1++) {
int var2, var3, var4;
double u[45],pl;
int values[16]={-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
/* ... */
for (var4=0; var4<16; var4++) {
if (values[var4] != testValues[var4]) break;
}
/* ... */
}
}
我能否确定 parallel_for
block 中定义的所有变量(即 var1
、var2
、var3
, var4
, u
, pl
, values
) 将具有每个循环迭代的局部范围,即不会跨线程或循环迭代共享?
此外,只要多个线程只是读取(而不是写入),就可以安全地访问 testValues
吗?
最佳答案
lambda 内部的所有变量都是执行它的线程的本地变量,所以是的,它们是安全的。
从/写入 testValues 数组在理论上是一种竞争条件,但如果您确保您只是同时读取而不是写入,或者只写入数组的不同部分,那应该是安全的。
关于c++ - parallel_for 中定义的变量范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10072286/
要并行执行一个循环,我正在使用: 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
我是一名优秀的程序员,十分优秀!