일단 언어는 swift긴 한데 C# 비동기랑 비슷하고 타 언어도 그럴 거라 예상을 함.
내가 이해가 안되는 점은 task를 cancel하게 되는 이?유 상?황 그리고 과정을 모르겠다.
Task 메소드로 보통 checkCancellation()같은 함수가 있잖아. 그럼 취소 행위 자체는 외부에서 전달받는다고 보면 됨? 캔슬 신호를 보내는 주체가 어디지? 함수를 실행시킨 상위 함수에서 캔슬 시그널을 던져 주는 건가?
만약 외부에서 던져준다고 하면 캔슬이 전달되기까지의 매커니즘이 뭐임? await 이후엔 어차피 실행이 suspend 정지?돼서 캔슬 여부를 판별못하지 않냐? 이미지를 다운로드하게 비동기 함수를 실행하고 10초가 지나면 타임아웃되게 할려면 내 머릿속엔 시간을 판별해서 캔슬 해 주는 비동기 함수B가 더 필요할 거 같음.
태스크가 자체적인 cancel()로 취소되지 않고 checkCacellation()으로 취소되게 만든 이유 즉, 실사용 사례를 잘 몰라서 이런 일이 생기는 거 같음. 혹시 간단하게 어떤 케이스가 있는 지 알려 줄 수 있을까...?
Bool iscanceled = false 있다고 하고 다른 UI 스레드에서 취소버튼이 눌린 걸 감지하면 canceled = true로 바꿈 다운로드 스레드는 주요 취소 지점마다 canceled가 true인지 검사하고 true면 취소 후 종료
아하 그럼 그 때 던져지는 예외를 await 예약어가 받아서 상황에 맞게 처리를 하는거네
ㅇㅇ - dc App