전체 글

전체 글

    코루틴(Coroutine) #1

    닷넷은 멀티쓰레드를 지원하고, 닷넷을 사용하는 유니티는 단일 쓰레드로 동작한다. 멀티쓰레드가 있는 코드는 버그 발생률이 높아지고, 멀티쓰레드간 교착 상태 경합 등 신경써야할 부분이 많아진다. 그렇다면 어떻게 멀티 태스킹을 손쉽게 구현할 수 있을까? 바로, 코루틴(Coroutine)을 사용해 멀티 쓰레드를 흉내낼 수 있다. '쓰레드를 사용하지 않고, 멀티 태스킹을 가능하게 한다.' 이게 어떻게 가능할까? 일반적으로 함수가 호출되고 끝나는 서브루틴 개념과 다르게 yield return을 사용해 해당하는 위치를 기억하고 다음 호출 때 그 곳부터 다음 부분을 실행할 수 있도록 하는 것이다. 그래서 여러 개의 코루틴을 동작시키고 각기 다른 시점에 yield가 반환되도록 한다면 마치, 여러개의 쓰레드가 동시에 동작..