• 카테고리

    질문 & 답변
  • 세부 분야

    게임 프로그래밍

  • 해결 여부

    미해결

멀티쓰레드 관련 질문입니다.

21.06.03 18:10 작성 조회수 147

0

C_MoveHandler에 진입햇을때 

ClientSession.MyPlayer나  Room이 다른 쓰레드에 의해서 null값으로 바뀔수 잇으니 지역으로 빼서 크래쉬가 안나게 해주는것은 이해가 됏습니다.

ClientSession은 안전한것인가요?

위처럼 Recv처리하고 잇는 와중에 Send요청할때 혹시나 기타 이유로 인해 Disconnect가 호출되서 ClientSession이 null이 될 경우가 생길것 같은데 ClientSession이 null이 될 경우는 없는것인지 궁금합니다.

답변 2

·

답변을 작성해보세요.

0

감사합니다

0

Recv, Send를 하고 있는 '도중'이라면
session을 이용해서 하고 있는 것인데요.
(ex. session.Send() 이런식)

C#은 참조 관리를 통해서 어떤 객체를
누군가가 (단 1개라도) 참조하고 있으면 삭제를 하지 않습니다.
따라서 실행 도중 내부적으로 null이 될 걱정은 하지 않아도 됩니다.

반면 C++이라면 현실적으로 일어날 수도 있는 문제입니다.
스마트 포인터나 RefCounting을 하지 않으면
 잘 실행하는 도중 밖에서 누군가가 세션을 소멸시켜 버릴 수도 있겠죠.