코루틴의 내부 구현에 집중하며, 코루틴의 동작 과정에 대해 만족할 만한 수준으로 설명하고자 합니다.

<aside> 💡 키워드: Continuation, CPS, suspend

</aside>

코루틴은 CPS(Continuation Passing Style)이라고 불리는 프로그래밍 방식을 통해 실행 정보를 저장하고 전달한다.

image.png

컨티뉴에이션 (Continuation)

function에 suspend keyword를 추가하면 컴파일 시 Continuation을 파라미터로 받도록 변환

image.png

Kotlin 컴파일러는 suspend 키워드를 만나면 CPS 패러다임을 구현하여, Continuation이라는 일종의 콜백을 주고 받도록 코드를 변환해준다. 코루틴이 재개될때 필요한 정보들이 Continuation 에 저장됨으로써 스레드를 블럭시키지 않고도 일시 중단이 가능하다.

image.png