I 1000個の配列要素から成るデータ構造を有し、各配列要素が8つのintの小さい配列である:配列のマルチスレッド配列?
std::array<std::array<int, 8>, 1000>
データ構造は、最大と最小の人口の配列要素を追跡する二つの「ポインタ」が含ま(「外側」、1000要素配列内)。たとえば、次のようになります。
min = 247
max = 842
複数のスレッドからこのデータ構造を読み書きするにはどうすればよいですか?要素のプッシュ/ポップと2つの "ポインタ"の維持の間の競合状態が心配です。操作の私の基本的なモードは次のとおりです。
// Pop element from current index
// Calculate new index
// Write element to new index
// Update min and max "pointers"
'std :: array'からどのくらい正確にポップしますか? – nwp
どのくらい頻繁にアクセスしますか?グローバルロックはenoghかもしれません。 –
@nwpあなたは値を削除し、配列要素を空白にします......それほど難しくありません。 – user997112