본문 바로가기

IndianPoker

[09] Coroutine과 Thread의 차이점 (공부 후 재작성)

[08]에서 코루틴을 통해 비동기적 메소드로 서버를 돌리려고 시도했지만, 이런 저런 이유들로 안됐다.

결국은 Accept -> BeginAccept로 가는 방식을 사용해서 해결하기로 마음먹었지만, 의문이 생겼다.

 

Coroutine도, Thread도 비동기적으로 실행되는 것처럼 보이는데, 왜 둘은 다른가?

-> 둘 다 동시 실행처럼 보이지만, 사실 Coroutine는 스케쥴링(순서 알잘딱)에 의한 지연실행에 불과하기 때문. 매 프레임을 기준으로 코루틴을 확인하는 과정을 해줄 뿐이다.

 

그래서 만약 코루틴의 과정에 문제가 생긴다면, 메인 동작도 영향을 받는다.(결국은 순차적 실행이기 때문에, 앞의 작업이 완료되지 않으면 뒤로 가지 못한다.) -> 참고자료 https://planek.tistory.com/36

 

즉, 네트워크같은 구조를 게임 내부 실행과 관계없이 하고 싶다면 결국은 쓰레드에서 처리해야한다는 결론이 나온다.

 

그런데 직접 쓰레드를 건드는 방법말고, 다른 방법도 있다고 하는데?
https://docs.unity3d.com/2022.3/Documentation/Manual/JobSystem.html

 

Unity - Manual: Job system

 

docs.unity3d.com

유니티에서 지원하는 Job System이 바로 그것. 이 부분을 ECS(Entity Component System)와 같이 공부해보고 나머지를 진행하자. 공부가 끝나면 추후 수정될 포스터이다.