IT공부

[C#, Unity] 비동기 함수와 코루틴의 차이

shine94 2025. 5. 5. 01:16

* 비동기 함수(Asynchronous Function)

   작업이 완료될 때까지 기다리지 않고, 그 사이에 다른 작업을 계속 진행할 수 있도록 만들어진 함수

 

   [과연 언제 필요할까?]

   결과를 기다릴 필요 없는 백업 작업에서 특히 유용하다

   1. 비동기 로그 저장

   2. 주기적인 백업

   3. 분석 이벤트 트래킹 전송

   4. 불필요한 알림 전송

   5. 통계 서버 전송

 

* 코루틴(Coroutine)과의 관계

   코루틴은 논리적인 비동기이고 비동기 함수는 물리적인 비동기이다

 

   [그게 뭔데?]

   비동기 함수는 진짜 따로 처리

   ㄴ OS나 .NET이 별도의 스레드(Thread)나 작업(Task)으로 처리 → OS 수준 비동기

   코루틴은 하나의 스레드 안에서 실행 흐름을 나눠 순차적으로 처리하여 비동기처럼 보이게 만듦

   ㄴ 유니티에서는 프레임 단위

   ㄴ C# 기본 IEnumerator는 MoveNext() 호출 단위

   ㄴ 흐름을 나누는 단위 yield return

   

 

정리하면
코루틴은 실행 흐름을 나눠 비동기처럼 보이게 하는 도구이고,
비동기 함수는 OS나 런타임 수준에서 실제로 따로 처리되는 진짜 비동기다