WWDC21 4

Swift Concurrency #7 - AsyncSequence와 AsyncStream

WWDC21: Meet AsyncSequence | AppleAsyncSequence란?AsyncSequence는 본질적으로 async가 적용된 Sequence이다.Sequence: 일반 Sequence와 마찬가지로 정해진 순서를 가진다. 순서가 뒤바뀌거나 임의로 접근(random access)하는 것은 불가능하다.Suspend & Resume: 각각의 요소(element)에 대해 작업을 일시 중단(suspend)하고, iterator가 값을 생성하거나 에러를 방출하면 다시 재개(resume)된다.에러 처리와 종료: 비동기 작업을 수행하므로 에러가 발생할 수 있다. 컴파일러는 이를 일반 throwing 함수와 동일하게 처리한다. 에러가 발생하거나 더 이상 데이터가 없으면 iterator.next()는 n..

Swift 2026.03.02

Swift Concurrency #5 - Concurrency와 Thread

WWDC21: Swift concurrency: Behind the scenes | Apple 참고로 해당 포스팅은 기존 Concurrency 영상 리뷰 중 역대급으로 내용이 복잡하고 어렵다...!이전 포스팅을 읽지 않았다면 정독하고 오기를 권장하고, 당장 복잡한 내용을 이해하기 싫다면 스킵하는 것도 나쁘지 않다. 미리 알면 좋은 운영체제 상식CPU는 1개 이상의 코어로 이루어져 있다. (멀티 코어 CPU = 하나의 CPU에 여러개의 코어를 갖는 CPU)1개의 코어는 1개의 Thread를 실행할 수 있다. (hyper threading 기술로 1코어당 스레드 2개씩 돌릴 수 있긴한데.. 여기선 배제한다) CPU는 1개 이상의 코어로 가지며, 코어의 갯수는 CPU 칩에 따라 다르다.Apple watch의 ..

Swift 2026.02.24

Swift Concurrency #4 - Actor로 Mutable State 보호하기

WWDC21: Protect mutable state with Swift actors | Apple동시성 프로그래밍의 어려움Data Race란?2개 이상의 스레드에서 동시에 같은 데이터에 접근할 때, 최소 하나 이상의 쓰기(Write) 작업이 발생하면 생기는 동시성 문제. Data Race는 타이밍에 따라 결과가 달라지는 특성이 있어 디버깅이 매우 어렵다.코드로 예를 들면 아래와 같고, 상황에 따라 각 print문에서 1/2 혹은 1/1 혹은 2/2 가 프린트 될 수 있다.class Counter { var value = 0 func increment() -> Int { value = value + 1 // read & write return value }}let counter = Counter()..

Swift 2026.02.24

Swift Concurrency #2 - Structured Concurrency와 Task

WWDC21: Explore structured concurrency in Swift | Apple Swift Concurrency 를 공부하다보면 async-await 외에도 자주 접하는게 Task 라는 녀석이다. 그런데 이게 익숙하지 않던 개념이어서 그런지 확실히 머릿속에 정리하기가 쉽지 않았다. Task { } ?아마 한번이라도 Swift Concurrency 를 시도했던 사람이라면 Task {} 를 본적이 있을 것이다.이 initializer의 용도는 "비동기 코드(async 함수)를 실행하기 위한 새로운 실행 컨텍스트를 제공한다." 라고 한다. 원래 작성되어있던 프로젝트 코드에서 async 함수를 호출하고 싶을 때 냅다 그냥 async 함수를 호출하면 오류가 나는데, async 함수를 Task ..

Swift 2025.10.01