並列ループの前に が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 では使用できません。
乾杯!