수업 자료

CH1. 코루틴 기초


Hello, Coroutine

fun main(): Unit = runBlocking {
    println("START")
    launch {
        newRoutine()
    }
    yield()
    println("END")
}

suspend fun newRoutine() {
    val num1 = 1
    val num2 = 2
    yield()
    println("${num1 + num2}")
}

// 결과
START
END
3

→ 즉, 우리는 두 개의 코루틴을 만든 것이다.

결과 해석

  1. main 코루틴이 runBlocking에 의해 실행되고 START 출력

  2. launch에 의해 새로운 코루틴 생성 → but 바로 실행이 일어나진 않는다.

  3. main의 yield()가 실행되어 new 코루틴에 실행을 양보한다.

  4. newRoutine 함수가 실행되고 그 안에서 또 yield() 가 실행되어 main 코루틴으로 돌아온다.

  5. main 루틴은 END를 출력하고 종료된다.

  6. 아직 newRoutine이 끝나지 않았으니 newRoutine으로 돌아가서 3 출력되고 프로그램 종료

    스크린샷 2023-10-22 오후 4.48.26.png

루틴과 코루틴의 가장 큰 차이