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

조영웅님의 프로필 이미지
조영웅

작성한 질문수

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part7: MMO 컨텐츠 구현 (Unity + C# 서버 연동 기초)

스킬 #1

멀티스레드 와 Lock 질문

해결된 질문

작성

·

319

0

안녕하세요. 항상 양질의 강의 감사합니다!

복습중 이해가 확실히 안되는 부분이 있어 질문드립니다.

서버에서 다양한 곳에서 Player를 이동시킬 수 있기 때문에(다른 플레이어가 스킬로 Player를 밀쳐내는 등..) Player를 이동시키는 부분은 한 곳에 몰아서 Lock을 걸고 실행시켜 준다고 설명해 주셨습니다.

그래서 위처럼 GameRoom에 Player가 움직이는 로직을 몰아서 Lock을 걸어주셨는데,

제가 궁금한 점은, 

HandleMove멤버함수에서 특정 Player를 참조(?) 하고있는 인자 player를 가지고 Lock을 걸고 작업을 하고 있을 때, 다른 클래스의 맴버함수에서도 똑같은 Player를 참조해서 Lock을 걸고 작업하려고 한다면 Lock이 걸리나요?

Lock을 건다는건 메모리상에 실제로 생성된 객체(?)를 기준으로 걸리는 건가요?

설명이 많이 미흡한 점 죄송합니다 ㅜ.

답변 1

1

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

object _lock을 Player에다 넣어놨으면 Player 단위의 Lock이 될테지만
위에서는 Room 단위의 락을 걸었으므로 동기화 단위라 Room이 되겠습니다.

조영웅님의 프로필 이미지
조영웅

작성한 질문수

질문하기