我有以下 C 代码:
...
data[index] = something;
a_write_memory_barrier();
index = new_index;
...
该代码不受锁保护(其他人只是读取data
和index
),我想确保data[index]
在更新index
. 这段代码周围有其他变量的内存写入和读取,但它们并不重要,因此 GCC 可以自由地重新排序它们(我希望这样做是为了优化)。只要保证data[index]
and的顺序index
就足够了。应该如何a_write_memory_barrier()
实施才能实现这一目标?