메모리 베리어
멀티 스레드 환경에서는 메모리 접근의 순서를 제어가하는것이 중요합니다.
메모리 베리어가 있을 때와 없을 때의 차이를 살펴봅시다.
베리어 유
순서 보장 O
스레드 간의 메모리 가시성이 보장되어
한 스레드에서의 변경 사항이 다른 스레드 에서 볼 수 있도록 보장됩니다.
베리어 무
순서 보장 X
스레드 간의 메모리 가시성이 보장되지 않아
한 스레드에서의 변경 사항이 다른 스레드에서 인식 되지 않을 수 있습니다.
멀티 스레드 환경에서 데이터 일관성 문제를 초래합니다.
언제 사용하는가?!
스레드 간 데이터 공유
동기화 메커니즘과 함께 사용시
비동기 작업시
어디서 사용하는가?!
데이터 쓰기 후 읽기
상태 플래그 사용
초기화 작업
메모리 베리어 O 일관성 유지
메모리 베리어 X 일관성이 깨짐
## 풀 메모리 베리어
풀메모리 베리어는
읽기 및 쓰기 모두 순서가 보장되도록 합니다.
한 스레드에서 중요한 상태 변수를 설정한 후
다른 스레드가 이를 읽기 전에
모든 변경 사항이 완료되도록 보장합니다.
## 스토어 베리어
스토어는 쓰기고 스토어 베리어는 쓰기 작업의 순서 보장을 합니다.
다른 변수를 쓰기 전에 이전의 쓰기 작업이 완료되도록 합니다.
## 로드 베리어
로드는 읽기고 로드 베리어는 읽기 작업의 순서를 보장합니다.
다른 변수를 읽기 전에 이전의 읽기 작업이 완료되도록 합니다.
## 베리어 위치 사용 쉽게 하는법
읽기전 베리어
쓰고난 후 베리어
'CS' 카테고리의 다른 글
ThreadLocalStorage (0) | 2025.03.27 |
---|---|
Lock (0) | 2025.03.26 |
캐시 히트와 캐시 미스 (0) | 2025.03.25 |
댓글