- 코루틴 launch는 서스펜드 함수를 비서스펜드 함수로 처리하는 데 핵심적인 역할을 한다. 🚀
- 컴파일러는 서스펜드 함수를 컨티뉴에이션을 받는 일반 함수로 변환한다. ⚙️
startCoroutine 확장 함수는 코루틴을 실행하는 빌더 함수로, 코루틴 내부의 컨텍스트 디스패처를 통해 실행한다. 🏗️
- 컨티뉴에이션은 각 서스펜드 단계에서 업무 처리가 끝날 때마다
resumeWith를 호출하여 다음 단계로 진행한다. ➡️
startCoroutine을 사용하면 서스펜드 함수를 실행할 수 있지만, 실행을 멈추거나 추적할 방법이 없다. 🚫
- 런치를 외부에서 기다리게 하고 싶지만,
startCoroutine은 넌블로킹 함수이므로 바로 종료된다. ⏳
runBlocking은 서스펜드 블록을 받아 쓰레드를 차단하므로 사용을 지양해야 한다. 🛑
- 코루틴 스코프는 Job을 반환하지만, 비서스펜드 상황에서 기다릴 방법이 없다. 😥
- 비동기 환경에서 서스펜드 함수를 호출하는 진입점으로 런치가 중요하다. 🚪
- 쓰레드 슬립을 사용하는 것과
runBlocking을 사용하는 것은 현재 동일한 결과를 초래한다. 😴