inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Session #2

Send하는부분 전체적인 로직 질문입니다.

314

김종현

작성한 질문수 14

1

Send함수 :

_pending이 true일 때 -> 지금 RegisterSend를 하고 있으니 등록하지 않고 대기열(큐) 에 넣어준다.

_pending이 false일 때 -> 지금 RegisterSend를 하고있지 않으니 RegisterSend를 실행한다.

동시에 Send를 실행할 수 있으니 lock을 걸어줘야 한다.

 

RegisterSend함수:

_pending을 true로 바꿔서 실행중이라는 것을 표시, 큐에서 버퍼 하나를 꺼내서 SendAsync를 비동기로 실행, 완료되면 OnSendCompleted를 호출한다.

Send에서 호출하는 경우와 OnSendCompleted 에서 호출하는 두 가지 경우가 있지만, Send에서는 _pending이 false일때 호출, OnSendCompleted에서는 _pending이 true일 때 호출하기 때문에 lock을 걸어주지 않아도 된다.

 

OnSendCompleted 함수:

RegisterSend을 하는 동안 큐에 쌓인 버퍼를 전부 처리하고 _pending을 false로 바꿔서 일을 끝냈다고 표시한다.

직접 호출과 콜백 두 가지 경로로 올 수 있기 때문에 lock을 걸어줘야한다.

 

대충 이렇게 이해했는데 이해한게 맞을까요..?

unity C# network

답변 1

2

Rookiss

안녕하세요

질문주신 부분은 잘 이해하셨습니다.
팁을 드리자면 [제대로 이해한 것이 맞는지] 확인하는 질문은 굳이 하실 필요가 없습니다.
어차피 모든 정답은 코드에 있고,
혹시라도 본인이 이해하신 것이 잘못됐다면,
언젠가 그 모순점을 깨닫게 되실텐데
그러면서 또 엄청 성장을 할 수 있습니다.

앞으로도 늘 남의 코드를 볼 일이 많을텐데
그 때는 정말 코드의 의도를 일일히 알려줄 사람이 없을테니
스스로 가정을 세우고, 그 가정에 맞게 분석하는 연습이 필요합니다.

C#에서의 RAII

0

66

3

TLS 질문드립니다.

0

79

2

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

0

74

2

Unity Span

0

97

2

XML, Dll 차이점

0

134

2

Session 질문입니다

0

96

1

Write Read 커서 키워드

0

88

1

더미 클라이언트 수에 따른 OnDisconnect 발생

0

85

2

네트워크 Send 전담 스레드 배치

0

112

2

UnhandledException 으로 서버 터지는 경우

0

102

2

컨텐츠 단, 엔진 단

0

118

1

질문 있습니다

0

93

2

C# 게임서버 3D MMORPG

0

159

2

유니티6 버전

0

106

2

receive하는 부분과 send하는 부분의 차이

0

154

2

커서의 위치의 중요성

0

110

2

C++ 전혀 모르는데 C# 서버

0

176

2

강의에 질문이 있습니다

0

92

2

멀티스레드 이해도 질문

0

107

1

500 vs 500

0

147

3

OnAcceptHandler 액션 함수

0

70

1

이 정도 서버의 객관적인 수준이 궁금합니다.

0

204

2

36. Serialization #3 에서 string (name) 코드 수정 질문

0

86

2

외부 컴퓨터와의 통신 방법이 궁금합니다

0

112

1