이번 주 스터디에서는 제가 Actor의 isolation에 대해 이야기했는데, 관련 내용을 블로그에도 한번 정리해 보겠습니닷 잘못된 정보가 있다면 언제든 댓글로 알려주세요 .. 🥹 Actor의 기본 원리는 isolation(격리)을 통해 Actor를 분리하고, 각각의 Actor에서는 하나씩 작업을 실행하도록 해서 low-level의 data race를 막는다. 처음에는 도대체 isolation(뉴진스 하니 아님)이 뭔가 싶었는데 말 그대로 격리 그자체 였다. Actor isolation이라는 것은 Actor와 Actor사이는 완전히 분리되어 있다는 것이고 Task isolation이라는 것은 각각의 Task 사이는 완전히 분리되어있다는 것임!! 1️⃣ Task isolation Task는 동시성 코드에서..
스터디 중 Actor에 대해 이야기해주신 ㄱ담ㅇ님 일단 감사합니다 (이 글을 보실진 모르겠지만..) 아무튼 Swift Concurrency의 Actor에 대해 이야기를 나누던 중 ㄱ담ㅇ님이 Actor모델은 사실 50년전부터 있던 개념임을.. 알려주셨고, 이 내용을 들으니까 Actor의 개념에 대해 더 잘 이해할 수 있었다. 그래서 Actor모델에 대해서 적어보려고 한다. Swift에서 Actor가 나오게 된 배경 WWDC21에서 처음으로 Swift에서의 Actor를 소개한다. 만약 두 개의 스레드에서 쓰기 동작이 있을때, 해당 데이터에 동시에 접근하게 되면 데이터 경합(data race)이 발생한다. 데이터 경합을 피하려면 값을 바꾸지 못하는 let을 이용해 공유 가변 상태를 제거하는 방법이 있지만.. ..
스터디를 하다가 홍선생님께서 Swift Concurrency를 이해하기 위해 필요한 3가지 중 Continuation이 있다고 하셨다. 그래서 Continuation에 대해 찾아보다가 WWDC21의 Swift concurrency: Behind the scenes를 보게되었고 여기서 GCD와 Swift Concurrency의 차이점에 대해 설명해주는데 좀 흥미로워서 글로 남겨볼까 한다. GCD (Grand Central Dispatch) 기존 GCD에서는 Task들을 여러 스레드에 적절히 분배해서 작업을 처리했다. 그래서 계속 스레드가 생기고, 이를 차단하고 Context Switching 하는 방법으로 작업을 수행했다. 그러나 만약, 스레드가 코어 수보다 너무 많아져서 스레드 폭발 이라고 불리는 현상..