Combine 뽀개기 1장: Publisher
·
Swift
Publisher Declares that a type can transmit a sequence of values over time. 형식이 시간이 지남에 따라 값 시퀀스를 전송할 수 있음을 선언합니다. Publisher는 하나 이상의 Subscriber 인스턴스에게 Element를 전달한다. 쉬운 말로 값을 방출하는 녀셕!!! 또한 Publisher는 프로토콜이다. 내부엔 Output, Failure, receive(subscriber:)를 필수로 구현해야 한다. 하나씩 보면, Output: Publisher 객체가 내보낼 값의 타입 Failure: Error가 발생했을 때 Error 타입(Error를 방출하고 싶지 않으면, Never로 설정) receive(subscriber:): Publisher..
[Swift] Swift Concurrency와 GCD
·
Swift
안녕하세요. 저번 글에서 Race Condition과 Thread Safe에 대해 알아봤었는데 비동기에 대해서 공부하다 보니 자연스럽게 WWDC 2021에서 소개된 Swift Concurrency에 대해서도 관심이 생겼습니다. 그래서 이번 기회에 GCD Swift Concurrency에 대해 간단하게 알아보고 사용법을 정리해 볼까합니다. GCD, Swift Concurrency 란??? GCD 기존 Swift에서 동시성 프로그래밍을 구현하기 위해 단연코 GCD API를 주로 사용했습니다. GCD는 비동기로 실행되고자 하는 코드 블록을 DispatchQueue라는 선입선출 Queue에 넣어 스레드에 작업을 할당하는 방식입니다. GCD는 클로저를 사용해 DispatchWorkItem라는 실행해야 할 작업 객..
[Swift] Race Condition과 Thread Safe
·
Swift
비동기적으로 기능을 구현하다 보면, 순차적으로 코드가 실행되는 것이 아니다 보니 주의해야 할 점이 생긴다. 그중 Race Condition과 해결책인 Thread Safe에 대해 알아보고자 한다.Race ConditionRace Condition 이란, 여러 Thread가 하나의 자원에 동시에 접근해서 자원이 변질되어 원하는 결과가 나오지 않는 현상을 뜻한다. 비동기적으로 코드가 실행되면, 여러 Thread 동시에 하나의 자원에 접근하는 경우가 생긴다. 이때 Thread가 한 자원 접근해 해당 자원에 변화를 주게 되면, Race Condition 발생되고, 원하는 결과를 얻기 힘들어진다. 코드를 통해 이해해 보자.var books = ["어린왕자", "백설공주", "해리포터", "신데렐라", "알라딘",..