Modern Concurrency in Swift

Apple이 마지막으로 비동기 프레임워크를 만든것은 2009년 MAC OS X SNOW Leopard때의 GCD입니다.
이후에 Swift가 출시 되었지만 동기,비동기에 대한 내용은 Swift에 최적화 되어있지 않았습니다. 애초에 GCD와 Operation이 Objective-c에 최적화가 되어있었기에 Swift네이티브에 맞춘 동시성이 개발되기 전까지 Objective-c용 동시성을 빌려온것이었습니다.
하지만 Swift 5.5이후 비동기 동시 코드를 작성하기 위한 새로운 개념이 추가되었습니다.
구조화된 방식으로 비동기 작업을 실행하기 위한 새로운 구문
비동기 및 동시 코드를 설계하기 위한 표준 API다.
libdispatch프레임워크에서의 저수준 변화는 모든 운영체제에 직접 통합하는 고수준 변경이다
안전한 동시성 코드를 생성하기 위한 새로운 컴파일러 지원
스레드와 같은 래퍼 Operation와는 Thread당신이해야 수동으로 관리 실행을. 즉, 스레드 생성 및 소멸, 동시 작업의 실행 순서 결정, 스레드 간에 공유 데이터 동기화를 담당합니다. 이것은 오류가 발생하기 쉽고 지루한 작업입니다.
GCD의 대기열 기반 모델은 잘 작동했습니다. 그러나 다음과 같은 문제가 자주 발생합니다.
스레드 폭발속도를 저하시킵니다
: 너무 많은 동시 스레드를 생성하려면 활성 스레드 간에 지속적으로 전환해야 합니다. 이는 궁극적으로 
.
우선 순위 반전
: 임의의 낮은 우선 순위 작업이 동일한 대기열에서 대기 중인 높은 우선 순위 작업의 실행을 차단하는 경우.
실행 계층 부족
: 비동기 코드 블록에는 실행 계층이 없었습니다. 즉, 각 작업이 독립적으로 관리되었습니다. 이로 인해 실행 중인 작업을 취소하거나 액세스하기가 어려웠습니다. 또한 작업이 호출자에게 결과를 반환하는 것을 복잡하게 만들었습니다.
이러한 단점을 해결하기 위해 Swift는 완전히 새로운 동시성 모델을 도입했습니다. 다음으로, Swift의 현대적 동시성이 무엇인지 알게 될 것입니다!

최신 Swift 동시성 모델 소개

새로운 동시성 모델은 언어 구문, Swift 런타임 및 Xcode와 긴밀하게 통합됩니다. 개발자를 위한 스레드 개념을 추상화합니다. 주요 새 기능은 다음과 같습니다.
1.
협력 스레드 풀.
2.
asyncawait
3.
구조적 동시성.
4.
컨텍스트 인식 코드 컴파일.