Барьеры памяти C ++ для атомики

Я новичок в этом вопросе. Может ли кто-нибудь дать упрощенное объяснение различий между следующими барьерами памяти?

  • Окна MemoryBarrier ();
  • Забор _mm_mfence ();
  • Встроенная сборка asm volatile (""::: "memory");
  • Внутренний _ReadWriteBarrier ();

Если нет простого объяснения, некоторые ссылки на хорошие статьи или книги, вероятно, помогут мне разобраться. До сих пор меня устраивало, что я просто использую объекты, написанные другими, обертывающими эти вызовы, но я хотел бы иметь лучшее понимание, чем мое текущее мышление, которое в основном похоже на то, что существует более одного способа реализовать барьеры памяти под прикрытием.

27
задан AJG85 12 January 2012 в 20:22
поделиться