• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

스레드 관련 문의드립니다

21.05.28 22:10 작성 조회수 126

0

수업 중 C_MoveHandler에서 멀티 스레드 환경에서 clientSession.MyPlayer와 GameRoom에 대한 방어코드가 필요하다고 설명을 해주셨는데요.

수업에 사용되고 있는 시점의 코드와 테스트 환경에서는 멀티스레드에 의하여 하나의 client session에서 C_MoveHandler을 수행하는 시점에  MyPlayer나 Myplayer가 가르키고 있던 Room을 지우는( session disconnect처리) 경우는 OnSendCompleted(다른 client session에서 요청한 broad cast 메시지 처리 중 에러 발생 케이스)함수에서의 문제 발생에 의한 예외 처리(disconnect) 시점에서만 발생할 수 있다고 생각되는 데 이외에 생각할 수 있는 조건이 있을까요?

( 각 client session별로  session disconnect가 이뤄 지는 곳은 Receive Thread나 Send Thread인데 Receive Thread의 경우 해당 client의 C_MoveHandler를 실행하는 주체이기 때문에 멀티스레드에 의해 해당 client의 정보를 수정하게 될 수 있는 곳은 Send를 처리하는 thread밖에 없을 것 같아서요.)

답변 1

답변을 작성해보세요.

0

물론 [수업에 사용되는 시점]의 코드에서는 Room 제거하는 경우가 많이 없지만,
나중에 가면 게임 사양이나 해킹 의심 등으로 킥 하는 등
Room에서 쫓아내는 부분이 더 많이 추가될 수 있으니
하는 김에 미리 챙기는 것이 여러모로 좋습니다.