• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    해결됨

멀티스레드 와 Lock 질문

21.08.09 17:40 작성 조회수 239

0

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

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

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

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

제가 궁금한 점은, 

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

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

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

답변 1

답변을 작성해보세요.

1

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