나는 다음과 같은 C 코드가 있습니다그런 경우에 light (est) weight GCC 메모리 장벽은 무엇입니까?
...
data[index] = something;
a_write_memory_barrier();
index = new_index;
...
코드는 잠금으로 보호되지 않습니다, 나는 data[index]
이 index
의 갱신 전에 저장되어 있는지 확인하려면 (다른 사람들은 data
및 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