Tasks and Task Groups task는 프로그램의 일부(part)로 비동기적으로 실행될 수 있는 작업 단위입니다. 모든 비동기 코드는 일부 작업의 일부로 실행됩니다. 이전 섹션에서 설명한 async-let구문을 사용하면 하위 작업이 생성됩니다. 또한 태스크 그룹을 생성하고 해당 그룹에 하위 태스크를 추가하여 우선 순위 및 취소를 보다 효과적으로 제어하고 동적인 수의 태스크를 생성할 수 있습니다. 태스크는 계층 구조로 정렬됩니다. 태스크 그룹의 각 태스크에는 동일한 상위 태스크가 있으며 각 태스크에는 하위 태스크가 있을 수 있습니다. 태스크와 태스크 그룹 간의 명시적인 관계 때문에 이 접근 방식을 구조화된 동시성(structured concurrency)이라고 합니다. 작업 간의 명시적인 상위-..
Asynchronous Sequences 이전 섹션의 listPhotos(inGallery:) 함수는 배열의 모든 요소가 준비된 후 전체 배열을 한 번에 비동기식으로 반환합니다. 또 다른 접근 방식은 비동기 시퀀스(asynchronous sequence)를 사용하여 한 번에 하나의 컬렉션 요소를 대기하는 것입니다. 다음은 비동기 시퀀스를 반복(iterating)하는 방법입니다. import Foundation let handle = FileHandle.standardInput for try await line in handle.bytes.lines { print(line) } 위의 예는 일반적인 for-in 루프를 사용하는 대신 await 를for뒤에 씁니다. 비동기 함수 또는 메서드를 호출할 때와 마찬..
Defining and Calling Asynchronous Functions 비동기 함수 또는 비동기 메서드는 실행 도중 일시 중단될 수 있는 특수한 종류의 함수 또는 메서드입니다. 이는 완료될 때까지 실행되거나 오류를 발생시키거나 절대 return하지 않는 일반적인 동기화 함수 및 메서드와는 대조적입니다. 비동기 함수 또는 메서드는 여전히 이 세 가지 중 하나를 수행하지만, 무언가를 기다리고 있을 때 중간에 일시 중지할 수도 있습니다. 비동기 함수 또는 메서드의 바디 안에서 실행이 일시 중단될 수 있는 각 위치를 표시합니다. 함수 또는 메서드가 비동기임을 나타내려면 throws를 사용하여 던지기 함수를 표시하는 방법과 유사하게 매개 변수 뒤에 async 키워드를 씁니다. 함수 또는 메서드가 값을 반환..
Concurrency(1) - Concurrency란 Swift는 비동기 및 병렬 코드를 작성할 수 있도록 지원합니다. 비동기 코드는 한 번에 하나의 프로그램만 실행되지만 나중에 일시 중단했다가 다시 시작할 수 있습니다. 프로그램에서 코드를 일시 중단했다가 다시 시작하면 네트워크를 통해 데이터 가져오기 또는 파일 파싱과 같은 장기 실행 작업을 계속하면서 UI 업데이트와 같은 단기 작업을 계속 진행할 수 있습니다. 병렬 코드는 여러 코드 조각이 동시에 실행되는 것을 의미합니다. 예를 들어, 4코어 프로세서가 있는 컴퓨터는 4개의 코드 조각을 동시에 실행할 수 있으며 각 코어는 작업 중 하나를 수행합니다. 병렬 및 비동기 코드를 사용하는 프로그램은 한 번에 여러 작업을 수행합니다. 이 프로그램은 외부 시스템..