Информация об изменениях

Сообщение Re[5]: Memory barrier не могу понять что это от 06.04.2023 12:35

Изменено 06.04.2023 13:00 Философ

Re[5]: Memory barrier не могу понять что это
Здравствуйте, okman, Вы писали:

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


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

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


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

ЗЫ: прежде чем отвечать сходите по приведённым ссылкам.
Re[5]: Memory barrier не могу понять что это
Здравствуйте, 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?