먼저 생활 비유
깃발을 올리기 전 택배 상자 놓기
“상자를 다 놓은 뒤 완료 깃발을 올린다”는 규칙이 없으면 다른 사람이 깃발부터 보고 빈 선반을 볼 수 있습니다.
5.4 · 캐시와 지역성
코드에 먼저 쓴 값이 다른 코어에도 먼저 보인다고 믿어도 될까요?
컴파일러와 CPU는 성능을 위해 독립 명령을 재배치하고 캐시·저장 버퍼 때문에 보이는 시점도 달라질 수 있습니다.
먼저 생활 비유
“상자를 다 놓은 뒤 완료 깃발을 올린다”는 규칙이 없으면 다른 사람이 깃발부터 보고 빈 선반을 볼 수 있습니다.
컴퓨터 예제로 바꾸기
data = 42;
ready = true;release 저장과 acquire 읽기를 사용하면 ready를 본 스레드가 그보다 앞선 data 쓰기도 보도록 약속할 수 있습니다.
지금 일어나는 변화
코어 A가 자기 캐시나 저장 버퍼에 값을 씁니다.
이 그림에서 기억할 한 문장
메모리 장벽은 시간을 멈추는 벽이 아니라 특정 메모리 연산 사이의 순서와 가시성을 제한하는 약속입니다.
현재 상태
30초 확인 문제
메모리 장벽이 필요한 대표 상황은?
처음 보는 용어 두 개
이 절을 다 읽었다면
메모리 장벽은 시간을 멈추는 벽이 아니라 특정 메모리 연산 사이의 순서와 가시성을 제한하는 약속입니다.