私は次のCコードを持っています:
...
data[index] = something;
a_write_memory_barrier();
index = new_index;
...
コードはロックによって保護されていません(他の人はただ読んdata
で)、の更新前に保存されindex
ていることを確認したいと思います。このコードの周りには他の変数のメモリ書き込みと読み取りがありますが、それらは重要ではないので、GCCはそれらを自由に並べ替えることができます(最適化のためにそうすることを願っています)。の順序を保証するだけで十分です。この目標を達成するには、どのように実装する必要がありますか?data[index]
index
data[index]
index
a_write_memory_barrier()