Какова цель объединения MemoryBarrier в .NET?C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Какова цель объединения MemoryBarrier в .NET?

Сообщение Anonymous »


Пример кода с https://www.albahari.com/threading/part4.aspx

класс Foo { интервал _ответ; bool _complete; пустота А() { _ответ = 123; Thread.MemoryBarrier(); // Барьер 1 _complete = правда; Thread.MemoryBarrier(); // Барьер 2 } пустота Б() { Thread.MemoryBarrier(); // Барьер 3 если (_завершено) { Thread.MemoryBarrier(); // Барьер 4 Console.WriteLine(_ответ); } } } Барьеры 1 и 4 не позволяют этому примеру записать «0». Барьеры 2 и 3 обеспечивают гарантию свежести: они гарантируют, что если B побежит после A, чтение _complete будет иметь значение true.

Я понимаю, что цель Thread.MemoryBarrier() — обеспечить полный барьер памяти, чтобы код над ним и код под ним не перепрыгивали, но что это значит? Барьер 2 здесь делать? после Барьера 2 нет кода, почему автор до сих пор использует барьер, чтобы не дать существующему коду перепрыгнуть через барьер? как пары барьеров 2 и 3 работают вместе, обеспечивая гарантию свежести?
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Множественные вызовы Parallel.ForEach, MemoryBarrier?
    Гость » » в форуме C#
    0 Ответы
    84 Просмотры
    Последнее сообщение Гость
  • Почему в C# Thread.MemoryBarrier() используется «lock or» вместо mfence?
    Anonymous » » в форуме C#
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Почему в C# Thread.MemoryBarrier() используется «lock or» вместо mfence?
    Anonymous » » в форуме C#
    0 Ответы
    7 Просмотры
    Последнее сообщение Anonymous
  • Как я могу использовать пользовательские группы и groupby.agg для объединения строк в df путем объединения определенных
    Anonymous » » в форуме Python
    0 Ответы
    112 Просмотры
    Последнее сообщение Anonymous
  • Таблицы объединения с Entity Framework Core игнорируют фильтр объединения
    Anonymous » » в форуме C#
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»