작성
·
258
1
안녕하세요. Session2 강의에서 Send구현을 했는데 막힌부분이 있습니다.
Send에 Lock을 걸어주셨는데 그 이유가 Send를 여러 쓰레드가 호출해서 RegisterSend() 함수가 동시다발적으로 실행되면 안되니 Lock을 걸어준다고 이해했습니다.
그런데 궁금한게 지금 상황이 좀 이해가 안되는것 같습니다. 제가 이해한 상황은 아래와 같습니다
현재 Session은 DummyClient에서 Accept한 세션소켓으로 주고 받고 하는중이다.
(OnAcceptHandler 함수가 실행되고 해당 세션소켓을 인자로받아 Session.Start를 해줬으니깐.)>
서버가 Send를 여러 쓰레드로 해서 해당 세션소켓으로 정보를 보내는 상황????
서버에서 멀티쓰레드로 Send를 사용해서 정보를 보내는 건가요?
답변 2
2
그 부분은 나중에 컨텐츠를 만들어 봐야 감이 잡힙니다.
Session은 말 그대로 클라의 대리인 정도라고 볼 수 있습니다.
특정 클라에게 패킷을 보내려면 Session을 통해 보내야 하는데,
온라인 게임에서는 보내야 할 정보가 굉장히 많습니다.
주변에 NPC, 플레이, 몬스터가 이동하거나 공격하거나,
하는 모든 행동들을 알려야 하는데
Send 하는 게임 로직이 이리 저리서
동일한 클라를 대상으로 호출될 수 있습니다.
ex) Player 주변 몬스터가 움직여서 패킷 보내야 함
ex) 우편물이 도착해서 해당 Player한테 패킷 보내야 함
...
0