我有一个非常简单的parallel_for循环

    tbb::parallel_for(tbb::blocked_range<int>(0, values.size()),
    [&](tbb::blocked_range<int> r)
    {
        for (int i = r.begin(); i < r.end(); ++i)
        {
            values[i] = std::sin(i * 0.001);
        }
    });

其中“值”是 double 的 vector 。我想知道的是,哪些线程在循环中的哪个范围内工作。是否可以从TBB获取某种线程ID?

最佳答案

另外,如果您想知道当前task_arena中工作线程的相对数量(从0到竞技场并发级别,请使用以下代码):

int worker_index = tbb::task_arena::current_thread_index();

如果所有线程将同时工作,则索引值的范围可以是连续的。

10-06 10:17
查看更多