강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

박준영님의 프로필 이미지
박준영

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

메모리 배리어

메모리 베리어 개념이 살짝 헷갈려서 질문드립니다!

작성

·

265

0

2번째 예제에서 메모리 베리어가 없으면

1) 스레드 A가 실행된다.

2) _answer = 123; 보다 _complete = true;가 먼저 실행되는 경우가 생긴다.(코드 재배치)

3) _answer = 123;이 실행되기 전에 스레드 B가 실행된다.

4) _complete = ture이므로 _answer = 0이 출력된다.

이런 순서로 프로그램이 실행 될 수도 있다는 뜻으로 이해했는데 맞나요?

메모리 베리어를 사용하면

1) 위 경우처럼 순서가 뒤바뀌는 경우가 없어진다. -> 코드 재배치 억제

2) 두 스레드가 같이 사용하는 전역변수 _answer, _complete를 Store하고 Load하는 부분을 확실하게 할 수 있다.( = 물을 내린다...?) -> 가시성

이러한 이점이 있는거구요!

답변 1

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

네 맞습니다.
1) 코드 재배치 억제
2) 캐시로 인한 가시성 문제 해결
위 문제를 해결합니다.

박준영님의 프로필 이미지
박준영

작성한 질문수

질문하기