[스터디] Cancel 실험
·
iOS/Swift Concurrency
👋 들어가기 전스터디에서, TaskGroup 관련된 내용으로 선생님께 너무 질문했더니, 선생님이 진이 빠지셨다. 그래서 한번 나혼자 마음대로 가지고 놀아보려고한다. 내가 예상한 내용과 실제 결과, 그리고 스터디에서 충격받은 내용을 함께 정리해보려고한다.🏁 학습할 내용Task가 중첩됐을 때TaskGroup 만드는 함수를 감싼 Task를 캔슬했을 때async let을 실행한 Task를 캔슬했을 때Task.detached를 사용했을 때TaskGroup 내에서,child가 에러를 throw하면 그룹 전체가 취소되는가? 0. Task가 중첩됐을 때 🧑‍💻 코드func runTask() async throws { let task = Task { try await Task.sleep(for:..
[스터디 숙제] region based isolation
·
iOS/Swift Concurrency
👋 들어가기 전3번 째 스터디숙제는 바로 region based isolated다. 다소 생소한 개념이니깐 proposal을 정리해보자..🏁 학습할 내용IntroductionMotivationPropsed Solution🙋 소개기존 Swift Concurrency는 값들을 actor / task 의해 결정되는 격리 도메인에 묶인다.Sendbale이 아닌 값이 격리 경계를 절대 넘을 수 없다. 이런 특징은 데이터 레이스를 방지할 수 있는 큰 장점도 있지만, 반대로 말하면 너무 제약이 강해,실제로 안전한 코드까지 막을 수 있는 단점이 있다. Sendable 이 문서에서는 비격리 값이 격리 경계를 넘어 안전하게 전송될 수 있는지 여부를 판단하는 새로운 제어 흐름 감지 진단을 도입하여 이러한 규칙을 완화..
[스터디] swift6로 마이그레이션 할 때 고려할 점
·
iOS/Swift Concurrency
👋 들어가기 전 이번 포스팅은 3번 째, 스터디에서 시작에서 소개된 내용이다.Concurrency 이전에 사용하고 있던 코드를 마이그레이션 할 때, 도움되는 중요한 얘기를 소개해주셨다. 한번 천천히 살펴보자.🏁 학습할 내용ContinuationCombine과 함께 사용하기strict Concurrency Checking♻️ Continuation 📋 정의 동기코드와 비동기코드를 연결하는 메커니즘📂 종류 여기서 잠깐, 정의 부분에서 , logging correctness violations 부분이 2종류를 나눈다. 1. Checked Continuationlogging correctness violatinos를 진행하는 Continuation, 규칙을 어겼을 때 디버깅 정보를 알려줌대신 검사 오버헤..
[숙제] TaskLocal proposal 읽기
·
iOS/Swift Concurrency
👋 들어가기 전 두번 쨰 스터디 숙제는 바로 TaskLocal이다. 구조화된 동시성에서 우리는 3가지 부모작업에서 상속받는다고 알고 있다. Task 우선순위Actor isolatedTask Local이 때, Task Local도 여기에 포함되는데, 한번 proposal을 읽어보며 알아보자.🏁 학습할 내용소개Task Local과 같은 개념이 이미 사용되고 있었다 ?선언 및 특징🖐️소개 Swift가 비동기 함수와 actor 개념을 도입하면서, Swift코드 내의 비동기 함수는 점점 증가하는 모습이다. 동시에 비동기코드를 디버깅, 추적, 계측하는 필요성도 높아지는 상황에서, thread-local 또는 queue-specific values 같은 기존 도구들은Task중심의 동시성 모델과 호환 지원이 되지..
[스터디 숙제] 취소
·
iOS/Swift Concurrency
👋 들어가기 전 컨커린시 2주차, 첫 숙제는 바로 "취소"에 대해 정리해보는 것 이전에 독학으로 학습한 내용은 링크 에서 다뤘고이번에는 swift proposlas 기반으로 recap을 한번해보자.🏁 학습할 내용취소 전파되는 경우취소의 특성비동기 함수의 취소 대응 방식취소 시, 즉시 일어나는 영향예제로 살펴보는 Task 취소 🚨 취소 전파되는 경우A task can be cancelled asynchronously by any context that has a reference to a task or one of its parent tasks. Cancellation can be triggered explicitly by calling cancel() on the task handle. Cancel..
AsyncStream
·
iOS/Swift Concurrency
👋 들어가기 전이번 포스팅은 컨커런시에서 제공해주는 비동기 반복문에 사용되는 객체를 내가 직접 만들기 위한 여정을 알아보자. 비동기 반복문은 for awiat in ... 형태인데여기서 ...에 들어가는 내용이 바로 AsyncStream이다. 또한 실제 동기 for문에서도 쓰이는 여러가지 collection들은 반복문들과 사용하기위해Sequence + IteratorProtocol을 채택하고 있다. 비동기 반복문 역시도 AsyncSequence + AsyncIteratorProtocol을 채택해야한다. 차례대로 알아보자.🏁 학습할 내용AsyncSequenceAsyncIteratorProtocolAsyncStream🚂 AsyncSequence먼저 알아볼 내용은 AsyncSequence 프로토콜이다. ..