• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

FindPlayer

22.06.27 03:20 작성 조회수 170

0

안녕하세요 루키스님. 제가 이해한게 맞는지 궁금합니다.
 
원래는 lock을 함수마다 걸어서 _players 딕셔너리에 동시에 여러 쓰레드에서 접근하는 것을 막았는데, JobQueue라는 개념을 도입하여 단일 쓰레드에서 순차적으로 처리하도록 하여 동시접근을 차단했습니다.
그런데 외부 쓰레드에서 갑자기 _players에 접근한다면 결국 두 쓰레드에서 접근하여 read/write 해버리는 문제가 발생할 수 있다고 이해하면 될까요? (물론 코드 상에서 FindPlayer 부분을 실행하는 것은 Main에서 room.Push(room.Update); 이 부분으로 호출하고 있기 때문에 jobQueue로 순차적으로 실행)
 
 

답변 1

답변을 작성해보세요.

0

네 그렇습니다.
Job방식을 사용할 때는, 저런 식으로 외부에서 데이터를 끄집어내는(FindPlayer)
행동은 절대 하면 안됩니다.