메모리 베리어에 관하여 궁금한 것이 있습니다.
391
작성한 질문수 4
메모리 베리어 강의의 막바지에 예제에서
void ()
{
_answer = 123;
Thread.MemoryBarrier();
_complete = true;
Thread.MemoryBarrier();
}
이런 코트가 있고 여기서 왜 메모리 베리어가 두 개가 있냐하면
_answer에 값을 변경하고 배리어를 통해 메모리에 써주고
_complete = true도 변경하고 배리어를 통해 메모리에 써주기 때문에 두 번 들어갔다고 설명을 하셨는데요. 여기서 문득 궁금해지는게 만약에
_answer = 123;
_complete = true;
Thread.MemoryBarrier();
이런식으로 변경을 위로 몰고 배리어를 한번만 호출하면
위에 변경사항이 모두 메모리에 써져 기존과 같은 결과의 코트가 되는것인가요? 아니면 바로 위의 최근 것만 램에 저장이 바로 되어 결과가 다른 코드가 되는 것인가요?
답변 1
0
변경을 위로 몰아도 동일한 결과가 나타납니다.
(배리어 기준 위/아래가 중요)
사실 배리어와 관련된 부분은 이론적으로만 알면 되고
실제로 intel 등의 환경에서는 테스트조차 안 되는 경우가 많습니다.
C#에서의 RAII
0
62
3
TLS 질문드립니다.
0
79
2
SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.
0
74
2
Unity Span
0
97
2
XML, Dll 차이점
0
134
2
Session 질문입니다
0
95
1
Write Read 커서 키워드
0
87
1
더미 클라이언트 수에 따른 OnDisconnect 발생
0
85
2
네트워크 Send 전담 스레드 배치
0
111
2
UnhandledException 으로 서버 터지는 경우
0
102
2
컨텐츠 단, 엔진 단
0
118
1
질문 있습니다
0
92
2
C# 게임서버 3D MMORPG
0
159
2
유니티6 버전
0
104
2
receive하는 부분과 send하는 부분의 차이
0
152
2
커서의 위치의 중요성
0
110
2
C++ 전혀 모르는데 C# 서버
0
176
2
강의에 질문이 있습니다
0
92
2
멀티스레드 이해도 질문
0
106
1
500 vs 500
0
147
3
OnAcceptHandler 액션 함수
0
70
1
이 정도 서버의 객관적인 수준이 궁금합니다.
0
203
2
36. Serialization #3 에서 string (name) 코드 수정 질문
0
85
2
외부 컴퓨터와의 통신 방법이 궁금합니다
0
112
1





