DummyClient.PlayerInfoReq.Write()의 동작 원리 중 질문이 있습니다.
430
작성한 질문수 5
SendBufferHelper를 통해 Open만 해줬을 뿐인데
어떻게 s가 ThreadLocalStorage에 있는 SendBuffer의 _buffer 값에 접근을 할 수 있는지 궁금합니다.
다시 말해 s는 분명 구조체 타입이고,
TryWriteBytes로 s에 패킷 데이터를 밀어 넣어준 다음에
SendBufferHelper.Close를 했는데,
어떻게 s의 정보가 ThreadLocalStorage에 있는 SendBuffer의 _buffer에도 남아 있는지 궁금합니다.
디버깅을 찍어보니깐 SendBuffer.Close()가 호출이 될 때,
새롭게 생성한 ArraySegment의 인자로 들어가는 _buffer 값이 s의 값이더라구요.
패킷의 데이터를 실제로 넣은 곳은 s인데 어떻게 ThreadLocalStorage에 있는 SendBuffer의 _buffer 값에도 영향을 주는 것인지..
ArraySegment가 class 타입이면 SendBufferHelper.Open으로 생성한 ArraySegment 를 참조해서 가능하겠거니
이해가 되겠는데 struct 타입이라 도저히 이해가 되지 않아요..ㅠ
어떤 마법과도 같은 일이 있었는지 알려주시면 감사하겠습니다 :D
답변 1
1
https://www.inflearn.com/questions/69958
비슷한 질문이 있었는데 위 그림을 보시면 이해가 쉬울 것 같습니다.
0
ArraySegment는 구조체이지만 ArraySegment 안에 있는 Array는 배열 타입이기 때문에 원본 Array, 즉 SendBuffer._buffer의 값을 참조하고 있다고 이해하면 될까요?
TLS 질문드립니다.
0
34
2
SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.
0
39
2
Unity Span
0
65
2
XML, Dll 차이점
0
99
2
Session 질문입니다
0
74
1
Write Read 커서 키워드
0
69
1
더미 클라이언트 수에 따른 OnDisconnect 발생
0
65
2
네트워크 Send 전담 스레드 배치
0
94
2
UnhandledException 으로 서버 터지는 경우
0
82
2
컨텐츠 단, 엔진 단
0
100
1
질문 있습니다
0
73
2
C# 게임서버 3D MMORPG
0
141
2
유니티6 버전
0
94
2
receive하는 부분과 send하는 부분의 차이
0
128
2
커서의 위치의 중요성
0
99
2
C++ 전혀 모르는데 C# 서버
0
164
2
강의에 질문이 있습니다
0
83
2
멀티스레드 이해도 질문
0
90
1
500 vs 500
0
122
3
OnAcceptHandler 액션 함수
0
57
1
이 정도 서버의 객관적인 수준이 궁금합니다.
0
185
2
36. Serialization #3 에서 string (name) 코드 수정 질문
0
78
2
외부 컴퓨터와의 통신 방법이 궁금합니다
0
100
1
스핀락 질문.
0
104
2





