actor 3

Swift Concurrency #6 - Data Race 제거하기

WWDC22: Eliminate data races using Swift Concurrency | Apple 우선 위 영상에서 예측하기 어려운 동시성(Concurrency)의 세계를 바다에 비유하여 설명한다.⛵️ Task (배): 바다를 항해하는 배로, 독립적으로 자신의 할 일을 수행.🏝️ Actor (섬): 바다 위 고립된 섬으로, 한 번에 하나의 배(Task)만 접근할 수 있는 안전한 데이터 보관소.🍍 Value Type (파인애플): 복사해서 다른 배로 넘겨줄 수 있는 안전한 데이터 구조체.🐓 Reference Type (닭): 복사본이 아닌 원본 참조를 공유하게 되어 혼란(Data Race)을 유발할 수 있는 클래스 객체. Task와 데이터 격리 (Task Isolation)Task는 독립적..

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