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

DeungHeok Chung님의 프로필 이미지
DeungHeok Chung

작성한 질문수

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

메모리 배리어

2번째 예제 이해

작성

·

206

0

main 부분 실행이 2개 스레드가 동시에 되는 건가요?

메모리 블락을 이용해서 무엇을 구분하려는 지 정확하게 이해가 안되네요!

답변 4

0

친절한 답변 감사합니다!

이해가 잘 되었습니다!

0

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

아 후반부를 말씀하시는거군요 ㅎㅎㅎ
강의를 찍은지 너무 오래돼서 시간대를 말씀해주시면 도움이 됩니다.

저 부분은 A에선 answer=123, complete=true 순서로 설정하고
B에선 if (complete) cw(answer)을 출력하는데
이론상 멀티쓰레드 환경에서 배리어가 없으면
answer가123이 아닌 0으로 출력될 수도 있다는 내용입니다.
(분명 A에선 answer를 123 설정한 다음에 완료 신호인 complete=true로 함에도!)
그런데 정말 이론적으로만 그렇고 인텔 환경에선 테스트를 해봐야겠지만 잘 일어나지 않을겁니다.

0

아니요 이해는 정확히 됐는데요. 2번째 예제에서 설명이 조금 부족한 거 같아요.

메모리 블락을 치면 순서대로 하겠다는 알겠는데요.

Task A, Task B를 동시에 진행한다고 해도. 쓰레드 B가 먼저 실행되면 false가 나는 것은 어쩔 수 없어서...

왜 이런 실험을 하는지 이해가 안되서 main문 예제가 있어야 할 것 같다는 말이었습니다.

0

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

main이 항상 2개 실행되는 것은 아니고,
Task을 이용하면 멀티쓰레드 환경이 됩니다.

메모리 배리어에 대한 내용이 잘 이해가 안가신다면 
이전 수업 [쓰레드] [캐시] [메모리 배리어]를 묶어서 다시 복습해보시기 바랍니다.
 

DeungHeok Chung님의 프로필 이미지
DeungHeok Chung

작성한 질문수

질문하기