목록Swift (15)
study record
Chapter 5. Intermediate async/await & CheckedContinuation Continuation continuation은 주어진 포인트에 프로그램의 상태를 추적하는 객체이다. 각각의 비동기 작업 단위를 그것을 위한 전체 스레드 하나를 만드는 것 대신에 continuation에 작업을 할당한다. 이것이 concurrency model이 작업을 하드웨어 가용성에 기반해 더 효율적으로 작업하게 한다. 이것이 CPU 코어만큼만 스레드를 만들게 하고, 스레드들 사이의 변환이 아닌 continuation 사이에서 전환하게 한다. await한 작업이 완료되고 원래 코드가 다시 resume되는 것은 어떻게 작동하는가? 코드가 suspend될 때 그 시점의 전체적인 상태를 캡쳐한 conti..
AsyncSequence 알아가기 AsyncSequence는 비동기적으로 요소들을 생산할 수 있는 sequence를 설명하는 protocol이다. Swift의 Sequence와 비슷하나, 차이점은 다음 요소를 위해 await 키워드를 붙여야 한다는 것이다. 예제에서의 note URLSession.data(for:delegate)는 Data를 리턴. URLSession.AsyncBytes는 URL request로부터 비동기적으로 바이트들을 준다. HTTP 프로토콜은 서버가 partial requests에 대한 허용성을 지원하는지를 정의하게 한다. 만약 서버가 지원하면, 응답에 대한 byte range를 리턴하는 것을 요청할 수 있다. 한 번에 전체 응답을 받는 것 대신에. 그래서 하나의 파일을 얻고자 요청..
async: 메서드가 비동기로 작동할 것임을 보여준다. 이 메서드가 결과를 리턴할 때까지 실행을 멈춘다. await: 코드가 실행을 멈출 수 있음을 보여준다. async 메서드가 리턴할 때까지 기다린다. Task: 비동기 작업의 단위. 작업이 끝나거나 취소되는 것을 기다릴 수 있다. 🧪 completion handler → async 메서드로 변경해보기 // escaping closure func fetchStatus(completion: @escaping (String) -> Void) { URLSession.shared.dataTask( with: URL(string: "")! ) { data, response, error in guard let data = data else { return } co..
본 글은 해당 링크(공식 사이트) 글을 해석하여 정리한 글입니다. Grand Central Dispatch (GCD) dispatch queues는 테스크들을 수행하는 데에 강력한 툴이다. Dispatch queues는 호출자를 존중하며 비동기적으로나 동기적으로 코드의 블록들을 실행하게 한다. dispatch queues를 분리된 스레드에 수행하게끔 사용할 수 있다. dispatch queues의 장점은 사용하기에 단순하고 효율적이라는 것이다. 이 챕터에서는 dispatch queues에 소개와 어플리케이션에서 일반적인 테스크를 실행하고자 할 때 어떻게 사용하는지를 담고 있다. 만약 존재하는 스레드 코드를 dispatch queues로 바꾸고 싶다면, 추가적인 팁을 Migrating Away from T..