동시성은 이제 프로그래밍에서 빼놓을 수 없는 요소가 되었다. 그래서 동시성이 뭔데?
Serial Queue? Concurrent Queue? 너무 헷갈린다. 예제와 함께 알아보자.
GCD를 기반으로 한 고수준 API인 Operation Queue에 대해 알아보자.
Concurrent Programming이 어려운 점은, 여러 작업흐름을 관리하면서, 공유데이터에 접근해야 한다는 점이다. 구체적으로 어떤 상황들을 마주할 수 있으며, 어떻게 해결할 수 있는지 알아보자.
Swift 5.5에서 소개된 Async/Await에 대해 공부해본다.
WWDC 2021에서 소개한 AsyncSequence에 대해 알아본다.
AsyncSequence를 공부하다 후반에 나온 AsyncStream을 이해하지 못해 문서를 읽어본다.
Task와 TaskGroup은 무엇일까? 그리고 Apple이 말하는 Structured Concurrency는 무엇일까.
Task는 코드 블럭을 독립적으로 사용할 수 있다. 이러한 점을 사용하면 병렬적으로 특정 코드를 처리하게 할 수도 있다. 그런데, 두 개 이상의 Task에서 공유자원을 사용해야 한다면 어떻게 할까?
Actor의 두번째 정리를 해본다. Sendable Protocol은 무엇일까? MainActor는 또 뭘까..?
Task, Actor를 알아보면서 많은 삽질을 했으니, 이제 다시한번 WWDC 영상을 봐본다.
앞에서는 새롭게 나온 개념들을 어떻게 사용하는 지에 대해서 알아보았다. 그렇다면 왜 이렇게 설계 했는지, 실제로는 어떻게 동작 하는지 알아보자.
앞에서는 Swift concurrency가 어떻게 동작하는지 확인했다. 이번에는 Swift concurrency를 채택할 때 주의해야 하는점, 그리고 Actor를 통한 Synchronization에 대해 알아보자.