У меня есть следующий код C:
...
data[index] = something;
a_write_memory_barrier();
index = new_index;
...
Код не защищен блокировкой (другие просто читают data
и index
), я хочу убедиться, что data[index]
сохранен перед обновлением index
. Вокруг этого кода есть операции записи и чтения памяти других переменных, но они не имеют значения, поэтому GCC может свободно переупорядочивать их (и я надеюсь, что это делается для оптимизации). Просто гарантируйте, что порядка data[index]
и index
достаточно. Как следует реализовать a_write_memory_barrier()
для достижения этой цели?