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

Sungwon Jung님의 프로필 이미지
Sungwon Jung

작성한 질문수

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

스킬 #1

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

작성

·

220

0

C_MoveHandler에 진입햇을때 

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

ClientSession은 안전한것인가요?

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

답변 2

0

Sungwon Jung님의 프로필 이미지
Sungwon Jung
질문자

감사합니다

0

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

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

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

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

Sungwon Jung님의 프로필 이미지
Sungwon Jung

작성한 질문수

질문하기