SendBufferHelper 클래스의 threadlocal
347
작성한 질문수 11
recvbuffer는 static으로 두지 않는이유가 있을까요..?
그리고, SendBufferHelper를 한 스레드에서 Open을 끝낸후 Close를 하기전에 다른 스레드가 Open을 하는 경우도 있나요?
답변 2
1
recvbuffer는 세션마다 고유하게 갖고 있어야 합니다.
게임에 접속한 사용자마다 하는 행동이 다를테니
각각 서버에 보내는 패킷도 다르기 때문이죠.
그리고 TCP에서 이 사람 저 사람이 보낸 데이터가 뒤섞이면 안 되는 이유는
TCP 패킷 특성상 1000바이트를 전송해도
1000바이트가 한 번에 오지 않고 200바이트씩 5번에 걸쳐 올 수 있기 때문입니다.
따라서 세션마다 Recv 버퍼를 따로 두고 관리를 해서
완성된 패킷이 오면 해당 내용을 분석하고 실행하는 식으로 진행해야 합니다.
SendBuffer에는 당연히 말씀하신 멀티쓰레드 문제가 있습니다.
그리하여 귀찮지만 TLS를 사용한거죠. (TLS은 쓰레드마다 고유함)
TLS 질문드립니다.
0
40
2
SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.
0
46
2
Unity Span
0
75
2
XML, Dll 차이점
0
103
2
Session 질문입니다
0
78
1
Write Read 커서 키워드
0
72
1
더미 클라이언트 수에 따른 OnDisconnect 발생
0
69
2
네트워크 Send 전담 스레드 배치
0
97
2
UnhandledException 으로 서버 터지는 경우
0
84
2
컨텐츠 단, 엔진 단
0
103
1
질문 있습니다
0
76
2
C# 게임서버 3D MMORPG
0
143
2
유니티6 버전
0
96
2
receive하는 부분과 send하는 부분의 차이
0
132
2
커서의 위치의 중요성
0
102
2
C++ 전혀 모르는데 C# 서버
0
169
2
강의에 질문이 있습니다
0
85
2
멀티스레드 이해도 질문
0
94
1
500 vs 500
0
127
3
OnAcceptHandler 액션 함수
0
60
1
이 정도 서버의 객관적인 수준이 궁금합니다.
0
187
2
36. Serialization #3 에서 string (name) 코드 수정 질문
0
81
2
외부 컴퓨터와의 통신 방법이 궁금합니다
0
104
1
스핀락 질문.
0
109
2





