일시 중단 연산이 동작하는 방식은 컴파일러가 일시 중단 함수를 상태 머신으로 변환한다.
→ 상태 머신 : 코틀린 컴파일러가 연속체(콜백)에 대한 각 상태를 나타내기 위해 생성
실제 구현된 일시 중단 연산은 연속체 전달 스타일이라는 패러다임을 수행하는데, 이 패러다임은 호출되는 함수에 연속체(콜백)를 보내는 것을 전제로 하고 있어, 함수가 완료되는 대로 연속체를 호출한다.
일시 중단 연산이 다른 일시 중단 연산을 호출할 때마다 완료 혹은 오류가 생겼을 때 호출돼야 하는 연속체를 전달한다.
모든 일시 중단 연산은 연속체를 보내고 받도록 변환한다. 이러한 작업은 대부분 컴파일러가 수행한다.
일시 중단 연산은 상태 머신으로 변환되는데, 상태를 저장하고 복구하며 한 번에 코드의 한 부분을 실행한다.
→ 재개할 때마다 중단된 위치에서 상태를 복구하고 실행을 지속함.
일시 중단 연산의 빌딩 블록이다. 연속체는 코루틴을 재개할 수 있다는 점에서 매우 중요하다.
public interface Continaution<in T> {
public val context: CoroutineContext
public fun resume(value: T)
public fun resumeWithException(exception: Throwable)
}
resume()
함수는 T 값을 파라미터로 갖는다.