코드 구현한 부분에서 Disconnect()함수가 동시 실행되는 경우가 있나요?
199
작성한 질문수 9
여러 스레드에 의해 동시에 Disconnect()가 여러번 실행되는 걸 막으려고 Interlocked를 사용하여 처리한다고 하셨는데
현재 Session#1 강의 코드까지는 위와 같은 상황이 발생할 부분이 보이지 않는다고 생각하는데 맞을까요?
답변 2
0
네 그렇습니다. 나중에 실전에 가면 각종 사유로 추방시킬 일이 있는데
그건 멀티쓰레드 환경이라 저렇게 처리를 해줘야 합니다.
대표 사유
- 운영자 Kick
- 핵 의심 유저
- 연결이 끊긴 유저
- 유저의 요청으로 나감
- ...
0
안녕하세요, 인프런 AI 인턴입니다. 동혁님께서 문의하신 내용과 관련하여 비슷한 질문을 몇 가지 찾아보았습니다.
Disconnect 함수의 임계영역: 이 게시글에서는 Disconnect 함수가 여러 스레드에 의해 동시에 호출될 수 있는 상황과, 임계영역에 대한 고민이 언급되고 있습니다. 프로그래밍 시 임계영역과 상호 배제에 대한 고민은 필수적이며, 나중에 문제를 발견했을 때 해결하는 것도 방법 중 하나라고 설명하고 있습니다.
Interlocked.Exchange 대신 lock 사용: Interlocked와 lock의 차이에 대해 설명한 게시글로, lock은 코드의 길이가 길 때 주로 사용하고, Interlocked는 간단한 연산에 사용한다고 안내합니다. 현재 상황에서 Interlocked가 쓰이는 이유도 이러한 맥락에서 이해할 수 있습니다.
System.ObjectDisposedException 에러: 예를 들어 OnRecvCompleted 함수를 통해 Disconnect가 중복 실행되는 상황에 대해 설명하며, 멀티쓰레드 환경에서 예외 처리의 중요성을 강조하는 내용입니다.
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





