메모리 베리어 개념이 살짝 헷갈려서 질문드립니다!
275
작성한 질문수 23
2번째 예제에서 메모리 베리어가 없으면
1) 스레드 A가 실행된다.
2) _answer = 123; 보다 _complete = true;가 먼저 실행되는 경우가 생긴다.(코드 재배치)
3) _answer = 123;이 실행되기 전에 스레드 B가 실행된다.
4) _complete = ture이므로 _answer = 0이 출력된다.
이런 순서로 프로그램이 실행 될 수도 있다는 뜻으로 이해했는데 맞나요?
메모리 베리어를 사용하면
1) 위 경우처럼 순서가 뒤바뀌는 경우가 없어진다. -> 코드 재배치 억제
2) 두 스레드가 같이 사용하는 전역변수 _answer, _complete를 Store하고 Load하는 부분을 확실하게 할 수 있다.( = 물을 내린다...?) -> 가시성
이러한 이점이 있는거구요!
답변 1
C#에서의 RAII
0
129
3
TLS 질문드립니다.
0
108
2
SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.
0
106
2
Unity Span
0
123
2
XML, Dll 차이점
0
167
2
Session 질문입니다
0
121
1
Write Read 커서 키워드
0
109
1
더미 클라이언트 수에 따른 OnDisconnect 발생
0
108
2
네트워크 Send 전담 스레드 배치
0
135
2
UnhandledException 으로 서버 터지는 경우
0
160
2
컨텐츠 단, 엔진 단
0
144
1
질문 있습니다
0
123
2
C# 게임서버 3D MMORPG
0
190
2
유니티6 버전
0
136
2
receive하는 부분과 send하는 부분의 차이
0
176
2
커서의 위치의 중요성
0
137
2
C++ 전혀 모르는데 C# 서버
0
207
2
강의에 질문이 있습니다
0
119
2
멀티스레드 이해도 질문
0
125
1
500 vs 500
0
182
3
OnAcceptHandler 액션 함수
0
89
1
이 정도 서버의 객관적인 수준이 궁금합니다.
0
230
2
36. Serialization #3 에서 string (name) 코드 수정 질문
0
110
2
외부 컴퓨터와의 통신 방법이 궁금합니다
0
129
1





