我std::vector
在并行循环之前填充了std::pair<Object, bool>
. 布尔值都初始化为true
. 循环大致如下:
for (int x = 0; x < xMax; ++x) // can parallelising the loop in x cause a data race?
for (int y = 0; y < yMax; ++y)
for (auto& i : vector)
if (i.first.ConstantFunctionDependingOnlyOnInput(x, y))
i.second = false;
由于我们只是将布尔值设置为false
我不认为这会导致数据竞争,但我不相信我对多线程的直觉。之后对该布尔结果进行的操作在单个线程中完成(bool == true
使用标准算法擦除向量中的所有元素。
这里的建议将不胜感激。我打算使用std::atomics
,但当然,它们不能用于 a ,std::vector
因为它们不是可复制构造的。
干杯!