본문 바로가기

iOS/Concurrency

(12)
[Swift 5.5] GCD의 문제? Swift 5.5 Concurrency model 특징과 async/await 개념 정복하기!! | Concurrency 안녕하세요. 이번 포스트는 Swift 5.5 WWDC async/await에서 새롭게 등장한 async/await에 대해서 공부를 하고 배웠던 내용을 정리하려고 합니다. Async/await는 WWDC를 통해 새롭게 알게 되었는데 원래 async/await pattern이 있고 여러 프로그램에서 디자인 되었다는 것도 새롭게 알게 되었습니다. Structured concurrency원칙을 기반으로 Swift 5.5 concurrecy가 설계 되었습니다. 기존에 존재하는 concurrenct APIs가 있음에도 불구하고 새로운 Concurrency model이 도입된 이유가 궁금했었는데, 그 이유중 하나로 async/await은 코드 길이가 줄어지고, 단순해지는 등의 장점이 있다는 것을 알게 되었습니다. S..
[Swift 5.5] Structured concurruency in swift | Concurrency 작년에 처음으로 WWDC 라는 것을 알게 됬고 여러 주제 중 modern concurrency(async/await,actor etc..) 소개 영상을 봤습니다. 영상에처 자꾸 Structured concurrency라는 말을 하는데 이 부분만 해석을 못하고 관련 개념이 안떠서 당황했었는데 이제서야 알게 됬습니다. 요기에 자세하게 있는데 이 글을 읽으며 알게 된 내용을 정리하고자 글을 작성하게 되었습니다. Structured Concurrency Concurrency system은 기본적인 툴을 제공합니다. 대부분은 지금 실행중인 threads는 새로 만들어진 thread와 concurrent 실행을 해야 합니다. shared system resource는 한정되어 있기에 Thread explosion을..
[Swift 5.5] actor, actor isolation, cross-actor reference 개념 완벽 뿌수기 | No2. Actor 안녕하세요. 저번 포스트에선 actor의 개념과 thread-safe, actor's serial executor에 대해 공부했던 개념을 정리했습니다. 이번 포스트는 actor와 isolated state, Sendable(관련 개념 정리)을 준수하며 actor를 사용하는 방법, actor isolated state, cross-actor reference, mainActor, nonisolated를 공부했던 내용을 정리하려 합니다. 지난번 actor에 대한 개념만 다시 간략하게 정리하겠습니다. 1. Actor concept Concurrent domain간 shared mutable state를 access할 때 동시성 문제가 발생할 수 있습니다. multi thread에서 mutable 값이 담긴 메..
[Swift 5.5] actor 개념 뿌수기!! +_+ #Concurrency, thread-safe, actor's serial executor | No1. Actor 안녕하세요. 이번 포스트는 Swift 5.5 concurrency api 중 actor에 대해서 공부한 개념을 정리하려고 합니다. Actor를 공부하기 전에 같이 공부하면 좋을 @Sendable, Sendable protocol에 관한 글 또한 정리 했습니다. 참고해주시면 감사합니다. 시작하기에 앞서 thread-safe라는 개념에 대해 알고 가면 좋습니다. 1. What does "thread-safe" mean? Main thread에서 호출하여 수행되나 동시에 background thread에서 호출되어 수행되나 같은 결과를, 예상되는 결과를 갖는 경우를 의미합니다. 여러 thread에서 공유 자원(object, method etc..)을 같은 시간 대에 동시에(concurrently) 수행해야 하..
[Swift 5.5] Sendable. Concurrent problem 해결 + Sendable개념 파해치기 with Actor 요즘 Concurrency를 계속해서 공부하고 있습니다. GCD부터 Swift 5.5 modern concurrency까지. GCD를 알고 있지만 modern concurrency async/await로 인스타그램 앱 클론 개발을 해왔었습니다. 낯선 개념은 아니었으나 WWDC 영상 말고 책으로 다시 공부해보고 싶었고 새롭게 알게 된 개념들을 정리 하려고 합니다. Modern concurrency 개념 중 가장 많이 사용한 개념은 async/await이 메인이였습니다. concurrent problem 관련해서 actor는 정말 중요한 개념인 것 같습니다. actor를 사용하기 위해선, Sendable 프로토콜을 준수하는 이유 또한 알아야 합니다. 1. What is modern concurrency an..
[Swift] GCD 개념 정리 | No7. GCD 안녕하세요. 이번 포스트는 GCD를 공부하면서 배운 개념들을 전부 정리하려고 합니다. 1. Concurrency and Parallelism Concurrency and Parallelism 개념 정리 포스트 1 편, 2 편 Parallelism은 하드웨어, 기계적 성질입니다. Concurrency와 마찬가지로 multi task를 할 수 있습니다. 다만 multi core일 때 가능합니다. 반면 concurrency는 single core, multi core 둘 다 concurrency한 동작을 할 수 있습니다. time-slicing과 context switch를 통해 task 수행 전환이 가능합니다. 개발을 하다보면 concurrent task 실행이 반드시 필요합니다. Concurrency ta..
[Swift] DispatchGroup으로 tasks 관리하기 | No6. GCD 안녕하세요. 이번 포스트는 DispatchGroup, CurrentPerform, DispatchPredition에 관한 개념을 정리하려고 합니다. GCD 관련 포스트 개념을 정리했습니다. Concurrency를 할 때 특정 task가 전부 끝날 경우 notification을 받고 싶은 경우가 있습니다. 예를들어 사용자가 로그인을 했을 때 해당 사용자의 정보, 프로필, 친구 관계, 영화, 승차권 등 예매했다면 예매 정보 등등 서버에 저장되어 있는 사용자에 관련된 정보를 전부 가져옵니다. 이때 사용자에 관한 정보들은 concurrency tool을 통해 async하게 받아옵니다. 각각의 task가 끝날 때마다 부분 부분 관련 데이터를 저장하는 곳에 업데이트 하는게 아니라 사용자에 관한 정보를 fetch하는..
[Swift] DispatchWorkItem, barrier와 singleton 개념 정리!! | No5. GCD 안녕하세요. 이번 포스트는 GCD의 개념 중 하나인 DispatchWorkItem, DispatchGroup, DispatchSemaphore에 대한 개념을 정리하려고 합니다. GCD나 concurrency의 개념은 링크에서 개념 정리 했습니다!! GCD 관련 포스트로 개념 정리했습니다. Dispatch queue에 task를 보내는 방법으로 async, sync가 있었습니다. () -> Void 타입의 클로저의 형태를 async의 인자값에 넣음으로 해당 task가 queue에 추가되서 thread에서 실행 됬습니다. DispatchWorkItem도 이와 유사합니다. 추가적으로 많은 기능을 지원합니다. task에 관해 더 많은 설정을 하고 싶을 때 DispatchWorkItem을 사용합니다. enqueu..