CS

메모리 베리어

explosion149 2025. 3. 26.

메모리 베리어

멀티 스레드 환경에서는 메모리 접근의 순서를 제어가하는것이 중요합니다.

메모리 베리어가 있을 때와 없을 때의 차이를 살펴봅시다.

베리어 유

순서 보장 O
스레드 간의 메모리 가시성이 보장되어
한 스레드에서의 변경 사항이 다른 스레드 에서 볼 수 있도록 보장됩니다.

베리어 무

순서 보장 X
스레드 간의 메모리 가시성이 보장되지 않아
한 스레드에서의 변경 사항이 다른 스레드에서 인식 되지 않을 수 있습니다.
멀티 스레드 환경에서 데이터 일관성 문제를 초래합니다.

언제 사용하는가?!

스레드 간 데이터 공유
동기화 메커니즘과 함께 사용시
비동기 작업시

어디서 사용하는가?!

데이터 쓰기 후 읽기
상태 플래그 사용
초기화 작업


메모리 베리어 O 일관성 유지
메모리 베리어 X 일관성이 깨짐

 

 

## 풀 메모리 베리어

풀메모리 베리어는

읽기 및 쓰기 모두 순서가 보장되도록 합니다.

한 스레드에서 중요한 상태 변수를 설정한 후

다른 스레드가 이를 읽기 전에 

모든 변경 사항이 완료되도록 보장합니다.

 

## 스토어 베리어

스토어는 쓰기고 스토어 베리어는 쓰기 작업의 순서 보장을 합니다.

다른 변수를 쓰기 전에 이전의 쓰기 작업이 완료되도록 합니다.

 

## 로드 베리어

로드는 읽기고 로드 베리어는 읽기 작업의 순서를 보장합니다.

다른 변수를 읽기 전에 이전의 읽기 작업이 완료되도록 합니다.

 

 

## 베리어 위치 사용 쉽게 하는법

읽기전 베리어

 

쓰고난 후 베리어

'CS' 카테고리의 다른 글

ThreadLocalStorage  (0) 2025.03.27
Lock  (0) 2025.03.26
캐시 히트와 캐시 미스  (0) 2025.03.25

댓글

💲 추천 글