개요

구조화된 동시성

코루틴이 GlobalScope에서 시작되면 프로그램은 코루틴의 종료를 보장하지 않는다.

코루틴의 종료를 보장하기 위해서 부모-자식 관계를 생성하고, 부모는 모든 자식이 작업을 마칠 때까지 중단된 상태로 기다리는데 이런 관계를 구조화된 동시성이라 부른다.

main 함수에서 runBlocking 빌더로 시작된 코루틴에서 this.launchthis.async 빌더로 자식 코루틴을 실행하는 것이 대표적인 예시이다.

launch를 GlobalScope로 시작하면 딜레이를 주어야만 main 함수가 lauch의 종료를 기다린다.

Untitled

이에 반해 launch가 부모(this)에서 시작되면 자식으로 관계가 만들어져 별도의 딜레이 필요없이 종료를 기다린다.

Untitled

구조화된 동시성 특징