모든 suspending function 은 취소 요청에 응답하도록 구현되어어야 한다.
이런 suspending function 들은 취소가 가능한 지점마다 현재 coroutine 이 취소되었는지 확인하며, 만약 취소되었다면 CancellationException
을 발생시키며 종료시킨다.
yield
함수를 사용한다.CoroutineScope.isActive
를 사용한다.suspending function 이 취소되어도 취소 불가능한 코드 블록을 만들어야할 필요가 있을 때가 있다.
가령, finally 로 반드시 자원을 해제해야하는 경우가 그러하다.
이런 경우라면 다음과 같은 방법이 있다.
use
함수로 자원을 해제한다.withContext
coroutine builder 에게 NonCancellable
context 를 전달하여 이 안에서 코드 블록을 정의한다.