我有以下 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()实施才能实现这一目标?