midas+son의 크리에이티브(creative) 이야기

유니티 자체는 싱글 쓰레드로 되어있다.

하지만 스크립트에서

thread를 동적 할당 하여 사용할 수 있다.


여기서 문제가 발생 할 수 있는 것이다.


유니티의 play를 종료해도

해당 Thread가 계속 동작을 하고 있다는 것이다.


네트워크 게임을 만들다가 

유의 했던 사항들 몇가지 적어보겠다.


1. OnDestroy() 이벤트 함수에 종료 처리 할 수 있는 것들은 해두자.


2. Thread 종료는 Abort() 로 하지 말자. 메인 Thread에서 놓아줄 뿐이지 동작 하고 있다. 


3. Thread 내에서 While(true) 는 가급적 사용하지 말고 bool 변수를 두어 break 외에도 빠져 나갈 수 있게 하자.


4. 좀 위험 하다 생각하면 try, catch 를 하고 catch 부분에 Debug를 남기자. (뭐라도 남겨라)


5-1. TCP 소켓 통신 에서는 Client 접속이 끊어지면 Read Failure가 계속 발생 함에 유의 하자.

5-2. 연속 발생 횟수를 체크해서 Thread 의 loop를 끝내고 나가도록 하자. 

5-3. Thread 나가기 전에 close() 할 수 있는건 하자.