Session
340
작성한 질문수 21
궁금한게 있어서 질문드립니다.
Session 이라는 인스턴스가 연결된 클라이언트 갯수만큼 만들어지는 걸로 이해했습니다.
저 상황에서 만약 server에 연결된 client가 100개라면
Server에 100개의 Session 인스턴스
각 client는 1개의 Session 인스턴스 일텐데
서버 입장에서 A라는 클라와 B라는 클라가 동시에 값을 보내어서 동시에 Send를 해야하는 상황를 생각한다면
서버에서 A 클라에서 받은 값과 B클라에서 받은 값은 각각 다른 Session 인스턴스로 받기 때문에 서로 아무리 멤버변수라고 해도 정적이 아닌 이상 서로 공유하고 있지 않을텐데 Lock를 사용하는 이유가 궁금합니다.
send 할때 lock을 이용하는건 하나의 인스턴스 안에서 여러개의 Thread가 생기는것을 고려해서 만들어준건가요??
답변 1
2
서버에서 A 클라에서 받은 값과 B클라에서 받은 값은 각각 다른 Session 인스턴스로 받기 때문에 서로 아무리 멤버변수라고 해도 정적이 아닌 이상 서로 공유하고 있지 않을텐데 Lock를 사용하는 이유가 궁금합니다.
합리적인 추론이었지만, 현실은 그렇지 않습니다.
비록 A, B 클라가 보내는 정보는 각기 다른 Session을 통해 받는 것은 맞지만,
그들이 조작하는 게임 세상의 Player는 동일한 공간에 있고
그 주변에는 몬스터들이 우글거리며 스킬이 난무하고 있겠죠.
A클라가 [내 플레이어는 C 몬스터를 공격할꺼야] 라는 의사표시를 서버에 전달한다면,
그 공격 행위는 A클라한테'만' 영향을 주는게 아니라 실제로
동일한 공간에 있는 모든 클라들한테 영향을 주기 때문에
그렇게 간단히 한 명한테 보내고 잊고 살 수가 없습니다.
이렇듯 다수의 플레이어들이 온갖 행동을 하는 상황에선
누가 어느 순서로 무슨 행동을 할지 예측할 수가 없습니다.
가령 위에서 A클라가 [내 플레이어는 C몬스터를 공격할꺼야]를 서버에 전달하는 와중에,
E클라가 [A클라한테 귓속말로 Hi라고 전달해줘]라는 요청을 할 수도 있겠죠.
C#에서의 RAII
0
72
3
TLS 질문드립니다.
0
82
2
SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.
0
76
2
Unity Span
0
100
2
XML, Dll 차이점
0
134
2
Session 질문입니다
0
98
1
Write Read 커서 키워드
0
88
1
더미 클라이언트 수에 따른 OnDisconnect 발생
0
85
2
네트워크 Send 전담 스레드 배치
0
115
2
UnhandledException 으로 서버 터지는 경우
0
104
2
컨텐츠 단, 엔진 단
0
118
1
질문 있습니다
0
93
2
C# 게임서버 3D MMORPG
0
159
2
유니티6 버전
0
108
2
receive하는 부분과 send하는 부분의 차이
0
154
2
커서의 위치의 중요성
0
111
2
C++ 전혀 모르는데 C# 서버
0
179
2
강의에 질문이 있습니다
0
94
2
멀티스레드 이해도 질문
0
108
1
500 vs 500
0
149
3
OnAcceptHandler 액션 함수
0
71
1
이 정도 서버의 객관적인 수준이 궁금합니다.
0
207
2
36. Serialization #3 에서 string (name) 코드 수정 질문
0
87
2
외부 컴퓨터와의 통신 방법이 궁금합니다
0
116
1





