인프런 커뮤니티 질문&답변
메모리 베리어 개념이 살짝 헷갈려서 질문드립니다!
작성
·
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하는 부분을 확실하게 할 수 있다.( = 물을 내린다...?) -> 가시성
이러한 이점이 있는거구요!





