Przykład C ++ „Bariera pamięci” [duplikat]

To pytanie ma już tutaj odpowiedź:

C ++ Memory Barriers for Atomics 2 odpowiedzi

Czytałem odpowiedź na to pytanie dotyczące słowa kluczowego volatile:

https://stackoverflow.com/a/2485177/997112

Osoba mówi:

Rozwiązaniem zapobiegającym zmianie kolejności jest użycie bariery pamięci, która wskazuje zarówno kompilatorowi, jak i procesorowi, że w tym punkcie nie można zmienić kolejności dostępu do pamięci. Umieszczenie takich barier wokół naszego zmiennego dostępu zmiennego zapewnia, że ​​nawet nieulotne dostępy nie zostaną ponownie uporządkowane w obrębie tego zmiennego, co pozwoli nam pisać kod bezpieczny dla wątków.

Jednak bariery pamięci zapewniają również, że wszystkie oczekujące odczyty / zapisy są wykonywane, gdy bariera zostanie osiągnięta, dzięki czemu skutecznie daje nam wszystko, czego potrzebujemy same, co sprawia, że ​​lotność jest niepotrzebna. Możemy po prostu całkowicie usunąć kwalifikator volatile.

W jaki sposób ta „bariera pamięci” jest zaimplementowana w C ++?

EDYTOWAĆ:

Czy ktoś mógłby podać prosty przykład kodu?

questionAnswers(3)

yourAnswerToTheQuestion