코루틴에서 부모-자식 관계는 아래와 같은 특성을 가진다.
- 자식은 부모로부터 컨텍스트를 상속받는다.
- 부모는 모든 자식이 작업을 마칠 때까지 기다린다.
- 부모 코루틴이 취소되면 자식 코루틴도 취소된다.
- 자식 코루틴에서 에러가 발생하면, 부모 코루틴도 에러로 소멸한다.
위 특성 중 아래 3가지는 Job 컨텍스트와 관련이 있다.
Job이란
Job은 수명을 갖고 있으며, 취소가 가능한 컨텍스트로 코루틴은 각자의 Job을 갖고 있다. 인터페이스이기는 하지만 구체적 사용법과 상태를 갖고 있어 추상 클래스처럼 다룰 수도 있다.
Job의 life cycle
- NEW
- 지연 시작되는 코루틴에서 Job이 가지는 상태
- 작업이 실행되어야 active로 변경
- ACTIVE
- 기본적인 코루틴에서 Job 시작 상태
- Job이 실행되고 코루틴은 이 Job을 수행
- COMPLETING
- 실행이 완료된 상태
- 자식 코루틴의 실행이 모두 끝날때까지 상태 유지
- COMPLETED
- Completing에서 자식 코루틴의 실행도 모두 끝난 상태
- CANCELLING
- Job 실행 중(Active, Completing)에서 취소, 실패한 상태
- CANCELLED
- 연결을 끊거나 자원을 반납하는 등 후처리 작업을 마친 상태
https://pl.kotl.in/kFGftx3oL?theme=darcula