[iOS] 동시성 프로그래밍(9) - async, await
2023. 2. 12. 23:26
iOS/iOS
async와 await는 Swift5.5에서 추가된 Concurrency Model로 더 safe, easy, fast 하게 다루기 위해 나온 기능이다. call-back기반의 비동기 함수의 문제점 기존의 비동기 작업이 끝나는 시점을 completion handler를 통해 알 수 있었는데, 이는 procedual(절차적인) 코드가 아니게 되기에 읽기 어려운 부분이 있다. 썸네일을 가져오는 fetchThumbnail 함수가 있다고 정의해 보자. fetchThumbnail 함수 내부에서 위와 같은 작업들이 진행된다. 이 중, dataTask와 preapreThumbnail은 오래 걸리는 작업이기에 비동기 작업으로 진행되어야 한다. 또한, dataTask의 return 값이 이후의 과정에서 쓰이기 때문에, ..
[iOS] 동시성 프로그래밍(1)
2022. 12. 30. 18:19
iOS/iOS
동시성 프로그래밍이란 "작업들을 동시에 처리하는 프로그래밍"을 의미한다. 이는 병렬 프로그래밍과 다른 개념인데, 동시성 프로그래밍은 하나의 processor가 A 작업과 B 작업을 왔다갔다 하며 동시에 처리하는 반면, 병렬 프로그래밍은 두개 이상의 processor가 A와 B를 하나씩 맡아 동시에 처리하는 것이다. processor에서 multi-core를 활용하기 위해, software에선 "수행해야 할 작업(Task)들을 동시에 처리"하는 동시성 프로그래밍이 필요하다. 동시성 프로그래밍은 크게 3가지를 통해 이루어질 수 있는데, 이번 포스팅에서는 이중 "멀티 쓰레딩"을 알아볼 것이다. 이에 앞서, Thread 개념에 대해 간단하게 알아보자. Thread Thread에 대해 이해하기 앞서 간단하게 Pr..