- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一段代码,我正在使用 tbb::parallel_for
对一个循环进行多线程处理,该循环由主线程调用。在那个循环中,我需要主线程来更新 UI 以反射(reflect)进度。据我观察,tbb::parallel_for
总是使用调用者线程 + N 个工作线程。但是,我想知道调用线程的使用是否得到保证,或者只是恰好如此?
示例代码如下:
static thread_local bool _mainThread = false; // false in all threads
_mainThread = true; // now true in main thread, but false in others
tbb::parallel_for(start, end, *this);
void Bender::processor::operator()(size_t i) const
{
...
if(_mainThread) // only main thread will issue events
ProgressUpdatedEvent(progress);
}
谢谢!
最佳答案
严格来说,我认为 TBB 不能保证任何给定线程应该运行什么(TBB 的基本原则是可选的并行性和随机工作窃取)。甚至 TBB 中的任务亲和性也是“软”的,因为它不能保证特定的 worker 可以接受亲和任务。
实际上,parallel_for 的实现方式意味着它将至少运行一个任务,然后再切换到其他任务并退出 parallel_for。因此,至少对于简单的情况,预计它会工作得足够好。
关于c++ - tbb::parallel_for 是否总是利用调用线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43551402/
要并行执行一个循环,我正在使用: 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
我是一名优秀的程序员,十分优秀!