코루틴 사용하기
이번 내일배움캠프를 진행하며 정말 많이 들었던 용어가 바로 코루틴이다. 매번 들어만 봤고 이번에 이론을 배우게 되어 기억하고자 정리하였다.
코루틴
코루틴은 작업을 다수의 프레임에 분산하는 메서드이다. Unity에서 코루틴은 실행을 일시 정지 후 Unity에 반환하지만 중단한 부분에서 다음 프레임을 계속 할 수 있는 메서드이다. 또한, Update() 메서드가 주로 반복되는 코드를 담당하지만 Update 메서드가 아닌 부분에서도 반복적인 코드를 사용해야 할 상황이 나오는데 이 경우 코루틴을 사용하는 것이 효과적이다.
동기? 비동기?
코루틴은 그렇다면 동기일까? 혹은 비동기일까? 동기는 어떤 작업이 요청되었을 때 그 작업이 종료될 때 까지 기다린 후 다음 작업을 수행하는 방식이고, 비동기는 어떤 작업을 요청했을 때 그 작업이 종료될 때 까지 기다리지 않고 다른 작업을 하고 있다가 작업이 종료되면 그에 대한 추가 작업을 수행하는 방식을 뜻한다. 각 단어의 의미만 보자면 코루틴은 비동기에 가까우나 코루틴은 멀티 쓰레딩 작업 방식을 사용하지 않는다. 따라서 비동기는 아니다.
공식 표현은 아니지만 '비동기적 동기' 라고 칭한다.
위 그림의 좌측이 우리가 평소 메서드에서 다른 메서드를 호출했을 때 작업 진행 플로우이다. 메서드 진행 중 다른 메서드가 실행 명령을 받으면 해당 메서드를 실행한 후, 반환된 이후에 다시 원래 메서드로 복귀하여 실행한다. 하지만 코루틴은 메서드를 일시 정지 및 재개할 수 있는 특징이 있다. 이러한 기능을 익혀두면 정말 유용하게 사용될 수 있는 기능이며 반복하는 기능은 InvokeRepeating 메서드를 대신하여 사용이 권장되므로 해당 기능에 대한 부분도 익혀두면 좋을 것 같다.
24.05.24 Today I Learned
'Today I Learned' 카테고리의 다른 글
[TIL][Unity] 트러블슈팅 - 같은 레이어 개체 간 충돌 무시 (0) | 2024.05.28 |
---|---|
[TIL][Unity] 트러블슈팅 - Invalid AABB inAABB 에러 (0) | 2024.05.27 |
[TIL][Unity] 게임 개발 입문 프로젝트 (0) | 2024.05.23 |
[TIL][팀프로젝트] 트러블슈팅 (0) | 2024.05.22 |
[TIL][Unity] 배경음악 랜덤 재생하기 (0) | 2024.05.21 |