Здравствуйте, netch80, Вы писали:
N>Барьер памяти это вообще не про синхронизацию кэшей. Это про установление соотношений по времени между видимостью другими операций, сделанных в исполняемом треде, в его потоке процессорных инструкций, а также для действий в коде на языках более высокого уровня (начиная с C).
А для ассемблера это разве не актуально, процессор все равно же может переставить инструкции (ooe)?
N>И аналогично, тут решается вставлением барьера компилятора. Альтернативно, чтение `a` помечается как volatile, но надо знать побочные эффекты этого метода. И, не отходя от кассы, volatile в C это не volatile в C#.)
А в чем отличия? Запрет на оптимизацию действий с переменной + барьер.