swift concurrency
-
Actor in Swift concurrencyiOS 2022. 12. 31. 07:39
Actor는 Swift concurrency의 핵심으로, async/await 및 structured concurrency와 함께 작동하여 정확하고 효율적인 동시성 프로그래밍 구축을 돕습니다. 데이터 경합(Data Race)은 두 개의 별도의 스레드가 동일한 데이터에 동시에 접근하고 이러한 접근 중 적어도 하나가 '쓰기' 작업일 때 발생합니다. 데이터 경합이 발생할 수 있다고 판단되면, actor를 사용해서 low-level에서 데이터 경합을 방지할 수 있습니다. 데이터 경합은 공유되는 가변 상태로 인해 발생합니다. struct는 동시에 접근할 수 있는 코드가 있을 때 컴파일하는 것을 허용하지 않으며, 값 타입이므로 따로 변수에 복사해서 할당한 후 작업을 수행하면 데이터 경합은 발생하지 않지만, 그것은 ..
-
Async/await in SwiftiOS 2022. 12. 3. 17:56
비동기 프로그래밍은 복잡해서 잘못된 비동기 코드를 작성하기 쉽습니다. 클로저가 중첩될수록 구조가 더욱 복잡해지며 이에 따라 에러 처리가 어려워지고, 실수로 결과 처리 블록을 빼먹을 수도 있습니다. 하지만 async/await로 이를 해결할 수 있을 뿐만이 아니라 코드도 간결해집니다. 기존에 completion handler로서 escaping closure를 매개변수로 받아 사용하던 것을, async/await 패턴을 사용하면 코드를 더 쉽게 읽고 이해할 수 있습니다. 이는 비동기 코드를 일반 코드처럼 작성할 수 있기 때문입니다. 따라서 코드를 작성하면서 혼란을 겪지 않으며, 의도를 더욱 정확하게 전달할 수 있습니다. 제가 기존의 방식으로 작성했던 코드에 async/await를 적용하면서 어떻게 변하는지..