← 질문 목록
#270깊이 0
코루틴의 구조적 동시성은 무엇을 해결하는가?
자식을 부모의 수명에 묶어, 부모가 끝났는데 자식이 남아 계속 도는 것을 막는다. 예외와 취소가 어디로 갈지도 함께 정해진다.
부모 코루틴
자식이 다 끝날 때까지 기다린다
자식 코루틴
부모의 컨텍스트와 Job으로 묶여 제어된다
형제 코루틴
보통의 Job 아래에서는 한쪽이 실패하면 함께 취소된다
구조적 동시성은 코루틴 간의 계층 구조를 형성한다. 부모 코루틴은 모든 자식 코루틴이 끝날 때까지 대기한다. 보통의 Job 아래에서는 자식의 예외가 부모로 올라가 형제까지 취소된다. supervisorScope 아래에서는 그 자식만 실패하고 형제는 계속 돈다.
이러한 구조 덕분에 Scope로 코루틴을 한 번에 취소할 수 있다. 예를 들어 안드로이드의 ViewModelScope를 쓰면 화면이 닫힐 때 실행 중인 모든 작업이 자동으로 중단된다.