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

toyboy0113님의 프로필 이미지
toyboy0113

작성한 질문수

[켠김에 출시까지] 유니티 캐주얼 모바일 MMORPG (M2)

몬스터 스폰

멀티 스레드 관련 의문점

작성

·

92

0

안녕하세요 강의 잘 보고 있습니다.

코드를 보면서 멀티 스레드 관련해서 궁금한게 있어 질문 남깁니다.

1.ClientSession에서 Lock을 잡지 않는 이유는 Receive쪽에서 하나의 스레드만 들어오기(낚시대 비유) 때문에 안걸어도 되는건가요? 즉 하나의 스레드가 메서드 안의 메서드를 타고 타고 들어와서 안전한건가요?


2. 1번이 맞다면 ClientSession 에서 GameLogic Push 하는 이유는 스레드 안전성 때문이라기보단 멀티 스레드를 활용하기 위함이라 보면 될까요?

답변 1

0

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

1은 맞지만 2부터는 공용 공간 (Room)으로 모든 ClientSession들이 로직을 토스하니
Receive와 무관하게 멀티쓰레드 환경에 처하게 됩니다.
그리하여 Job을 새로 만들어서 Push하고 있는 것입니다.
(이게 아니라면 락을 걸고 처리해야 하는데 그러면 멀티쓰레드 효과를 보지 못함)

이 부분은 온라인 컨텐츠를 만드는 강의에서 반복해서 강조할 정도로 중요한 내용인데,
아직 완벽히 이해를 못하신 것 같으니 기회가 되면
C# Part4 게임 서버의 Job 관련된 내용을 다시 복습해보세요.

toyboy0113님의 프로필 이미지
toyboy0113
질문자

답변 감사합니다!

toyboy0113님의 프로필 이미지
toyboy0113

작성한 질문수

질문하기