개요 iOS 앱개발에서 UI는 메인쓰레드에서 그린다. 그런데 아주 오랜 시간이 걸리는 코드 예를들어 네트워크 호출과 같은 코드를 메인쓰레드에서 실행하게되면 UI를 그리는 메인쓰레드는 그 일을 담당하게되면서 UI 그리기를 중단한다. 이는 사용자에게 앱이 버벅거리거나 끊
기존에 비동기 호출 코드를 작성할땐 아래와 같이 작성해야 했다.이런 코드는 중첩된 비동기 상황에서 콜백지옥을 만들고 가독성의 저하를 일으킨다.Concurrency를 이용하면 동기코드를 작성할때와 같은 형식의 코드를 작성할수 있기 때문에 가독성이 좋아진다.이때 사용하는
continuation이란 continuation은 기존의 애플의 레거시 콜백 기반 비동기 API나, 델리게이트 API들을 async/await 패턴으로 연결하는 브릿지 연결을 하는 객체이다. 안전 검사가 포함된 continuation인 CheckedContinuat
구조적 동시성은 비동기 작업들이 명확한 부모-자식 관계와 생명주기를 가지도록 하는 프로그래밍 패러다임을 말한다."모든 비동기 작업은 정의된 범위(scope) 내에서 시작되고 종료되어야 한다"마치 중괄호 {} 안에서 변수의 생명주기가 관리되는 것처럼, 비동기 작업도 구조
작업 취소란 Task 내부의 비동기 함수들에게 취소 신호를 전파하는 것을 말한다.구조적 동시성에서 부모 작업은 자식 작업에도 취소를 전파한다.여기서 취소는 작업을 즉시 중단시키는 강제 종료가 아니라, 각 작업이 취소 신호를 확인하고 스스로 실행을 중단하도록 하는 협력적