기존 GCD의 코드 가독성, 에러 처리 등에 의한 문제점을 해소하기 위해 등장한 새로운 동시성 프로그래밍 모델 GCD에서는 무엇이 문제였는가? 1. 피라미드형 중첩 클로저들의 가독성 필요로 인해 깊이 중첩된 클로저들은 가독성을 방해 코드를 추적하기 어려워짐 2.
비동기 작업을 실행하는 기본 단위 비동기 함수나 연산을 실행할 수 있는 컨테이너 역할 기존의 GCD Task 방식 비동기 내부에서 스레드 이동을 직접 신경 쓸 필요가 사라짐 다만 특정 백그라운드 스레드를 지정해서 동작할 수 없음. 우선순위 지원 | TaskPr
동시성 프로그래밍에서 data race를 방지하고 안전하게 상태를 관리하기 위한 새로운 참조 타입 data race >여러 스레드에서 동일한 메모리 위치를 읽거나 쓰려고 할 때 발생하는 문제 ex) 동일한 하나의 객체의 프로퍼티에 2개의 스레드가 추가, 삭제 작업을
기존의 비동기 코드(콜백, 델리게이트 등등)을 async/await 패턴으로 변환할 때 사용하는 핵심 개념비동기 함수의 실행 상태를 저장하고, 중단된 지점에서 재개 할 수 있도록 하는 객체기존의 콜백 기반 함수를 aync/await 스타일로 쉽게 변환 가능.기존 코드와

비동기 함수의 실행 상태를 관리하기 위한 구조 함수 재실행에 필요한 정보를 저장 왜 필요한가? 비동기 함수는 같은 스레드에서 재시작을 보장하지 않는다. 함수는 자신이 동작하는 스레드의 Stack에 매개 변수, 동작을 쌓아 실행된다.
컴파일러가 코드의 문맥(context)을 분석하여 개발자가 명시적으로 @MainActor와 같은 전역 액터를 선언하지 않아도, 해당 코드가 특정 전역 액터에서 실행되어야 함을 자동으로 추론하고 적용하는 기능 왜 필요할까? UI의 업데이트는 항상 메인 스레드에서 이루

Swift의 동시성(actors, async/await)에서 값이 어느 “격리 영역(region)”에 속해 있는지 추적해서, 서로 다른 격리 영역 간에 안전하지 않은 공유/전달이 있는지 검사하는 기능Sendable을 준수하지 않으면 객체를 다른 Task나 actor로

준수하는 타입에 대해 수명 주기와 소유권을 제어하는 프로토콜Swift의 모든 타입(Enum, Class, Struct)는 모두 Copyable을 암시적으로 준수즉, Class를 제외한 모든 타입은 값이 복사되어 할당되거나 전달됨.암시적으로 준수되던 Copyable 프로

해당 값 타입 객체의 소유권을 함수에게 넘긴다는 의미소유권을 함수에게 완전히 넘겨 기존 호출자는 해당 값을 사용할 수 없게 함.consuming 키워드로 정의된 매개변수에 객체를 넣으면 해당 함수에게 객체의 소유권이 넘어감.기존 해당 객체의 소유권을 지닌 변수는 재접근
구조적 동시성 환경에서 특정 Task 내에서만 데이터를 공유하기 위해 사용하는 프로퍼티 래퍼static 한정: static 프로퍼티에만 적용 가능Task 범위 한정: 값이 설정된 특정 Task와 그 하위 Task에서만 접근 가능상속: 부모 Task에서 생성된 Task는