我有下面的C代碼:在這種情況下,輕(est)體重GCC記憶障礙是什麼?
...
data[index] = something;
a_write_memory_barrier();
index = new_index;
...
的代碼不會被鎖定保護(其他人只是閱讀data
和index
),我要確保data[index]
是index
更新前存儲。在這段代碼中有內存寫入和其他變量的讀取,但它們並不重要,所以GCC可以自由地對它們進行重新排序(我希望它可以這樣做以進行優化)。只要保證data[index]
和index
的順序就夠了。 a_write_memory_barrier()
應該如何實現這個目標?
見http://stackoverflow.com/questions/8896092/is-there-a-compiler-memory-barrier-for-a-single-variable – dbrank0