-
카테고리
-
세부 분야
게임 프로그래밍
-
해결 여부
미해결
Session.Disconnect 락 필요성
22.06.29 18:15 작성 조회수 163
0
static void OnAcceptHandler(Socket clientSocket)
{
try
{
Session session = new Session();
session.Start(clientSocket);
byte[] sendBuff = Encoding.UTF8.GetBytes("Welcome to MMORPG Server !");
session.Send(sendBuff);
Thread.Sleep(1000);
session.Disconnect();
}
catch (Exception e)
{
Console.WriteLine(e);
}
}
Session#1 강의 듣던 중 Session의 Disconnect 함수가 임계영역이 아닌 것 같아 질문드려봅니다.
쓰레드 마다 Session 객체를 새로 생성후 사용하기 때문에 Session객체가 다른 스레드가 접근할 수 없는 스택영역에 올라가있다고 생각했거든요.
혹시 제가 간과한 부분이 있다면 지적 부탁드립니다.
좋은 강의 감사합니다!
답변을 작성해보세요.
1
Rookiss
지식공유자2022.06.29
지금은 그냥 간단히 테스트를 하기
일종의 에코 서버 기능만 하고 접속을 끊으니 말씀하신게 맞지만,
나중에 가면 session을 SessionManager 등 어딘가에서 들고 있게 됩니다.
그리고 특정 클라한테 패킷을 보낼 때 이 session을 통해서 데이터를 주고 받게 되는데요.
컨텐츠를 만들다가 클라가 이상한 패킷을 보내는 등 의심스러운 행동을 하면
강제로 Disconnect()를 때릴 필요가 생기게 됩니다.
따라서 나중에 가면 thread-safe하지 않게 되겠죠.
답변 1