Post

Structured Concurrency

Structured Concurrency

코루틴의 Life cycle

image

Completing 단계가 필요한 이유

  • 자식 코루틴이 있을 경우 응답을 기다려야 하기 때문
  • 부모 자식 코루틴에서 처리 중 에러 발생 시 취소 요청을 전파해야하기 떄문
1
2
3
4
5
6
7
8
9
10
11
12
fun main(): Unit = runBlocking {
  launch {
    delay(600L)
    printWithThread("A") //출력되지 않음. 에러가 전파되었기 때문
  }
  launch {
    delay(500L)
    throw IllegalArgumentException("코루틴 실패 !")
  }
}

// Exception in thread "main" java.lang.IllegalArgumentException: 코루틴 실패 !

Structured Concurrency

  • 부모 자식 관계의 코루틴이 한 몸 처럼 움직이는 것

Structured Concurrency의 장점

  • 수많은 코루틴이 유실되거나 누수되지 않도록 보장한다.
  • 코드 내의 에러가 유실되지 않고 적절히 보고될 수 있도록 보장한다.
This post is licensed under CC BY 4.0 by the author.