在多线程应用程序中访问共享向量

时间:2018-10-22 13:58:18

标签: c++ multithreading

我有一堆线程正在努力获取结果并将其存储在共享向量中。

现在我正在以以下方式执行此操作,但我想知道是否有更快的执行方式(速度是此处的唯一优先事项,因此请重点关注)。以避免虚假共享等。

全球范围内存在一个向量

std::vector<double> allResults;

,每个线程通过写入将其结果存储在此向量中

std::for_each(allResults.begin() + i, allResults.begin() + i + n, 
    [](double& res) 
    { 
    res = .... //Calculate result and store it.
    });

在这里,对于每个线程,i, n是与当前线程应该计算的结果范围相对应的指标:allResults[i], ...., allResults[i + n - 1]。这些范围对于每个线程都是唯一。因此,每个线程都在各自的结果范围内工作,没有重叠。

0 个答案:

没有答案