메모리 베리어 개념이 살짝 헷갈려서 질문드립니다!
271
작성한 질문수 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
66
3
TLS 질문드립니다.
0
80
2
SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.
0
74
2
Unity Span
0
98
2
XML, Dll 차이점
0
134
2
Session 질문입니다
0
96
1
Write Read 커서 키워드
0
88
1
더미 클라이언트 수에 따른 OnDisconnect 발생
0
85
2
네트워크 Send 전담 스레드 배치
0
113
2
UnhandledException 으로 서버 터지는 경우
0
102
2
컨텐츠 단, 엔진 단
0
118
1
질문 있습니다
0
93
2
C# 게임서버 3D MMORPG
0
159
2
유니티6 버전
0
106
2
receive하는 부분과 send하는 부분의 차이
0
154
2
커서의 위치의 중요성
0
111
2
C++ 전혀 모르는데 C# 서버
0
176
2
강의에 질문이 있습니다
0
93
2
멀티스레드 이해도 질문
0
107
1
500 vs 500
0
147
3
OnAcceptHandler 액션 함수
0
70
1
이 정도 서버의 객관적인 수준이 궁금합니다.
0
204
2
36. Serialization #3 에서 string (name) 코드 수정 질문
0
86
2
외부 컴퓨터와의 통신 방법이 궁금합니다
0
112
1





