[Kotlin] coroutine 학습 - part2: Cancellation and Timeouts

succeeding·2024년 7월 24일
0

Kotlin coroutine

목록 보기
2/3

Cancellation

모든 suspending function 은 취소 요청에 응답하도록 구현되어어야 한다.
이런 suspending function 들은 취소가 가능한 지점마다 현재 coroutine 이 취소되었는지 확인하며, 만약 취소되었다면 CancellationException 을 발생시키며 종료시킨다.

구현

  • 취소가 가능한 시점마다 다른 Continuation 에 실행 시간을 양보하는yield 함수를 사용한다.
  • CoroutineScope.isActive 를 사용한다.

NonCancellable

suspending function 이 취소되어도 취소 불가능한 코드 블록을 만들어야할 필요가 있을 때가 있다.
가령, finally 로 반드시 자원을 해제해야하는 경우가 그러하다.
이런 경우라면 다음과 같은 방법이 있다.

  • use 함수로 자원을 해제한다.
  • withContext coroutine builder 에게 NonCancellable context 를 전달하여 이 안에서 코드 블록을 정의한다.

Timeout

참고 문서

코루틴 공식 가이드 읽고 분석하기 — Part 2

0개의 댓글

Powered by GraphCDN, the GraphQL CDN