인프런 커뮤니티 질문&답변

장재범님의 프로필 이미지
장재범

작성한 질문수

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

Session #1

Thread.Sleep()

작성

·

308

0

ServerCore부분에서 Thread.Sleep()을 안하고 만드니까 에러가 납니다.

오류를 찾아보니까

소프트웨어로 인해 연결이 중단되었습니다. 데이터 전송 제한 시간 또는 프로토콜 오류로 인해 호스트 컴퓨터의 소프트웨어에 의해 설정된 연결이 중단되었습니다.

입니다.

Sleep이 무슨 중요한 역할을 한다고 , 왜 이 친구 때문에 오류가 생긴 건지 모르겠습니다..

디버그 모드로 찾으려고 하면 정상적으로 출력이됩니다,, 실행을하면 오류가 생기고요,,,

정리하면

  1. thread.sleep()의 유무 때문에 오류가 나는 이유

  2. 디버그 모드일 때는 정상적으로 출력이 되는데, 실행을 하면 버그가 생겼을 때 오류 찾는 법이 궁금합니다

항상 감사합니다!

답변 2

0

장재범님의 프로필 이미지
장재범
질문자

넵 감사합니다!

논리적으로 유추,,, 쉽지 않네요,,,
화이팅해보겠습니다!!

 

0

Rookiss님의 프로필 이미지
Rookiss
지식공유자

1.Sleep 자체가 뭔가를 해결한 것은 아니고
조금 기다림으로 인해 우연히 문제가 해결되는 것인데요.
정확히 어떤 부분에서 실습하다 에러가 낫는지 모르겠지만
강의 도중 에코 서버 실습 (데이터만 보내고 바로 종료한다거나) 등
완성되지 않은 코드가 많으니 전체 서버가 다 조립이 완료된 다음에 고민해보시기 바랍니다.

2. 멀티쓰레드에서 타이밍 이슈는 흔하고 딱히 그런 케이스의 '오류 찾는 방법'은 없습니다.
정말 Release 모드에서만 발생하는 버그도 많은데 논리적으로 유추하는 수밖에 없습니다.

장재범님의 프로필 이미지
장재범

작성한 질문수

질문하기