코루틴과 멀티쓰레딩은 어떤 차이가 있는지 설명해주세요.
코루틴
- 코루틴은 얼핏 보기에는 다른 작업을 실시하는 동시에 또다른 작업이 실행되는 것으로 보여 멀티쓰레딩과 유사하게 보일 수 있음
- 그러나 실제로는 동시에 두 가지 작업이 실행되는 것이 아니라 하나의 작업이 실행되는 중간에 또다른 작업이 중간 중간 개입하여 실행되는 것으로 하나의 쓰레드에서 작업이 이루어짐
(하나의 메인 쓰레드에서 제어권을 주고받는 형태)
멀티쓰레딩
- 실제 Unity에서 사용하는 메인 쓰레드 외의 다른 쓰레드에서 계산을 실행하는 것
- 메인 쓰레드에서 동시에 처리하기 힘든 복잡한 계산을 처리할 때 사용
- Unity 상의 오브젝트 등은 메인 쓰레드에 위치한 정보이므로 이를 조작할 수 없음
결론적으로 코루틴은 멀티쓰레딩과 유사하게 보이나 Unity 메인 쓰레드에서 기능을 실행하다 yield를 구현하고 있는 부분에서 차례를 확인하고, 다시 메인으로 돌아가 실행하던 지점에서 이어서 실행하는 구조