메모리 배리어란?
C++에서 메모리 배리어(memory barrier)는 다중 스레드 환경에서 메모리 액세스 순서를 제어하고 동기화하는 데 사용되는 중요한 개념이다. 메모리 배리어는 스레드 간의 메모리 가시성과 일관성을 보장하게 된다.
cpu나 컴파일러가 실행결과가 바뀌지 않도록 최적화 하여 연산의 순서를 바꿀 수 있다.
멀티스레드에서는 실행 순서가 바뀌어 실행 될 경우 메모리를 잘못 접근하면 결과가 달라질 수 있다.
메모리 배리어는 순서를 강제 하여 결과를 보장한다.
cpu에서 지원하지만 c++ 표준에서도 똑같이 할 수 있는 방법이 있음.
std::atomic_thread_fence(std::memory_order_seq_cst) // 메모리정책을 통해 atomic과 같이 만들어 줄 수 있음. // 메모리 가시성 강제로 보장. // 메모리 재배치 금지 함.