Re[5]: Memory barrier не могу понять что это
От: Философ Ад http://vk.com/id10256428
Дата: 06.04.23 12:35
Оценка:
Здравствуйте, okman, Вы писали:

O>sfence/lfence/mfence — это малость для другого. В машинный код для x86/x64 практически всегда вставляется инструкция типа xchg, xadd или что-то подобное.


Интересно, откуда инфа? Можно какие-нибудь доказательства, типа вот такой ссылки, ну или вот такой, или дизасм получающегося кода, или объяснение того, что именно будет делать функция типа

void Foo(){
Thread.MemoryBarrier();
}


Я ОООчень бы хотел узнать, почему вы так думаете, откуда вы это взяли и где тут логика.

ЗЫ: прежде чем отвечать сходите по приведённым ссылкам.

UPD: по своей же ссылке увидел

 #elif defined(HOST_X86)

  #define YieldProcessor() __asm { rep nop }
  #define MemoryBarrier() MemoryBarrierImpl()
  __forceinline void MemoryBarrierImpl()
  {
      int32_t Barrier;
      __asm {
          xchg Barrier, eax
      }
  }


Т.е. если платформа не AMD64 будет действительно xchg. Но логики я тут всё равно не вижу.
И да, где теперь найти X86 но не X86_64?
Всё сказанное выше — личное мнение, если не указано обратное.
Отредактировано 06.04.2023 13:00 Философ . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.