• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

코루틴의 대한 질문이 있습니다.

23.01.26 16:40 작성 조회수 249

1

강사님, 강의 내용에는 코루틴이 없어 학습중에 궁금한 점이 있어서 문의드립니다.

아래 코드의 실행 순서를 제가 정리 해봤습니다.

제가 코루틴의 suspend, resume을 잘 이해한게 맞나 궁금해서요.

물어볼 곳이 없어서, 죄송스럽게도 강사님께 문의를 하게 되었습니다.

강의 내용과는 관련이 없어 답변을 해주시면 감사하겠지만, 답변이 안달리다도 괜찮습니다.

감사합니다.

 

  1. println("Coroutine Outer") 이 실행된다.

  2. A 코루틴에서 delay를 만나, B 코루틴으로 실행권을 넘겨간다.

  3. B 코루틴도 delay를 만나, A 코루틴으로 실행권을 넘겨준다.

  4. 1초가 지나고 A코루틴의 println("Coroutine A, Si")을 실행한다.

  5. 반복문에 의하여 A코루틴의 2번째 delay를 만나, 다시 B 코루틴으로 실행권을 넘겨준다.

  6. B 코루틴도 1초가 지난 상태여서, 바로 println("Coroutine B, Si")을 실행한다.

  7. 반복문에 의하여 B코루틴의 2번째 delay를 만나, 다시 A 코루틴으로 실행권을 넘겨준다.

  8. 그 다음 4~7을 반복문이 끝날 때 까지 반복 후 코루틴이 종료된다.

fun main() = runBlocking {
    // A 코루틴
    launch {

        repeat(5) { i ->

            delay(1000L)

            println("Coroutine A")

        }

    }
    
    // B 코루틴
    launch {

        repeat(5) { i ->

            delay(1000L)

            println("Coroutine B")

        }

    }

    println("Coroutine Outer")

}

fun <T> println(msg: T) {

    kotlin.io.println("$msg [${Thread.currentThread().name}]")

}

답변 1

답변을 작성해보세요.

1

안녕하세요, 민영님!! 😊 질문 주셔서 감사드립니다!! 🙏

보내주신 코드와 설명을 읽어본 결과, 제가 이해한 것과 동일합니다!!

suspend function이나 코루틴이 재개되는 부분에 대해서 잘 이해하신 것 같습니다!! 👍

 

추가로 벌써 보셨을 수도 있지만, 코루틴과 관련해서 당근마켓 유튜브에 올라온 영상이 좋더라고요!!!

혹시 아직 보지 않으셨다면 봐보시는 것도 좋을 것 같습니다!

감사합니다!! 🙇

화이팅님의 프로필

화이팅

질문자

2023.01.27

답변 감사합니다~~!!~!

유튜브도 봐보겠습니다~!