inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버

SendBuffer

ThreadLocal<SendBuffer> 관련 질문입니다.

297

djaghdyd123

작성한 질문수 12

1

강의 듣다가 그림이 잘 안그려지는 부분이 있어서요.

경합을 피하기위해 각 쓰레드마다 고유의 SendBuffer를 갖게끔 만들어 준것 같은데 ,

제가 이해한대로면 , 예를들어 100명의 유저가 행동한 정보를 모아서  SendBuffer에 담아서 각 100명에게 다시 보내주는 방식으로 생각했습니다. 이런 과정을 하나의 작업 단위라고 보았을때 쓰레드 하나가  모두 처리하는 것인가요?

그러고 다음작업은 다른 스레드일수도있고 동일쓰레드일수도있고..

쓰레드 마다 고유의 SendBuffer가 있다면 서로 각각 내용물이 다르게 될텐데 강의에서 Knight 클래스의 정보를 담는 과정에서 다른 쓰레드가 바통터치하듯 중간에 낚아채는 경우는 없나요? 

마지막 부분에 sendBuffer안에 있는 buffer는 다른 쓰레드가 참조는 하지만 읽기만 하기 때문에 상관 없다고 하셨는데 애당초 tls에 할당을 해준건데 참조가되나요? 

network unity C#

답변 1

1

Rookiss

제가 이해한대로면 , 예를들어 100명의 유저가 행동한 정보를 모아서  SendBuffer에 담아서 각 100명에게 다시 보내주는 방식으로 생각했습니다. 이런 과정을 하나의 작업 단위라고 보았을때 쓰레드 하나가  모두 처리하는 것인가요?

-> 패킷을 만들고 보내주는 (혹은 Send를 예약하는) 역할은 단일 쓰레드에서 처리합니다.

그러고 다음작업은 다른 스레드일수도있고 동일쓰레드일수도있고..
쓰레드 마다 고유의 SendBuffer가 있다면 서로 각각 내용물이 다르게 될텐데 강의에서 Knight 클래스의 정보를 담는 과정에서 다른 쓰레드가 바통터치하듯 중간에 낚아채는 경우는 없나요? 

-> TLS이기 때문에 쓰레드마다 고유합니다. 따라서 다른 쓰레드가 중간에 낚아챌 수는 없습니다.

마지막 부분에 sendBuffer안에 있는 buffer는 다른 쓰레드가 참조는 하지만 읽기만 하기 때문에 상관 없다고 하셨는데 애당초 tls에 할당을 해준건데 참조가되나요? 


-> 네 주소 참조는 상관없습니다.

그런데 사실 위 부분은 게임 컨텐츠를 만들어서 패킷 수신/전송을 해봐야 의미를 알기 쉽습니다.
지금 잘 와닿지 않더라도 나중에 Part7을 하다 보면 감이 올거에요.

TLS 질문드립니다.

0

35

2

SpinLock과 컨텍스트스위칭에 대해 질문 남겨요.

0

39

2

Unity Span

0

66

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