inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

Session #1

코드 구현한 부분에서 Disconnect()함수가 동시 실행되는 경우가 있나요?

199

동혁

작성한 질문수 9

0

여러 스레드에 의해 동시에 Disconnect()가 여러번 실행되는 걸 막으려고 Interlocked를 사용하여 처리한다고 하셨는데

현재 Session#1 강의 코드까지는 위와 같은 상황이 발생할 부분이 보이지 않는다고 생각하는데 맞을까요?

C# unity 네트워크

답변 2

0

Rookiss

네 그렇습니다. 나중에 실전에 가면 각종 사유로 추방시킬 일이 있는데
그건 멀티쓰레드 환경이라 저렇게 처리를 해줘야 합니다.
대표 사유
- 운영자 Kick
- 핵 의심 유저
- 연결이 끊긴 유저
- 유저의 요청으로 나감
- ...

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 동혁님께서 문의하신 내용과 관련하여 비슷한 질문을 몇 가지 찾아보았습니다.

  1. Disconnect 함수의 임계영역: 이 게시글에서는 Disconnect 함수가 여러 스레드에 의해 동시에 호출될 수 있는 상황과, 임계영역에 대한 고민이 언급되고 있습니다. 프로그래밍 시 임계영역과 상호 배제에 대한 고민은 필수적이며, 나중에 문제를 발견했을 때 해결하는 것도 방법 중 하나라고 설명하고 있습니다.

  2. Interlocked.Exchange 대신 lock 사용: Interlocked와 lock의 차이에 대해 설명한 게시글로, lock은 코드의 길이가 길 때 주로 사용하고, Interlocked는 간단한 연산에 사용한다고 안내합니다. 현재 상황에서 Interlocked가 쓰이는 이유도 이러한 맥락에서 이해할 수 있습니다.

  3. System.ObjectDisposedException 에러: 예를 들어 OnRecvCompleted 함수를 통해 Disconnect가 중복 실행되는 상황에 대해 설명하며, 멀티쓰레드 환경에서 예외 처리의 중요성을 강조하는 내용입니다.

  4. Disconnect 순서 문제 질문: 서버 코드에서 예외가 발생하는 상황과 처리 방법에 대한 질문으로, 예외 처리를 통한 안정성을 강조합니다.

위의 링크들을 통해 추가적인 내용을 참조하실 수 있습니다. 여러 스레드 환경에서 동일한 리소스를 자주 접근할 경우, Interlocked 혹은 lock과 같은 동기화 기법이 불필요한 실행을 막는 데 유용하다는 점을 기억해 주세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

TLS 질문드립니다.

0

43

2

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

0

48

2

Unity Span

0

76

2

XML, Dll 차이점

0

105

2

Session 질문입니다

0

80

1

Write Read 커서 키워드

0

76

1

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

0

70

2

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

0

98

2

UnhandledException 으로 서버 터지는 경우

0

86

2

컨텐츠 단, 엔진 단

0

106

1

질문 있습니다

0

77

2

C# 게임서버 3D MMORPG

0

147

2

유니티6 버전

0

98

2

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

0

134

2

커서의 위치의 중요성

0

103

2

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

0

169

2

강의에 질문이 있습니다

0

86

2

멀티스레드 이해도 질문

0

95

1

500 vs 500

0

130

3

OnAcceptHandler 액션 함수

0

61

1

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

0

193

2

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

0

83

2

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

0

106

1

스핀락 질문.

0

110

2