並列ループの前に が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;
これまで boolfalseを この bool の結果に対して行われる操作は、その後単一のスレッドで行われます (bool == true標準アルゴリズムを使用してベクター内のすべての要素を消去します。
ここでアドバイスをいただければ幸いです。を使用するつもりでしstd::atomicsたが、もちろん、std::vectorコピー構築可能ではないため、 a では使用できません。
乾杯!