본문 바로가기

iOS

(19)
[iOS] GCD 활용하기 2편 (DispatchGroup, DispatchSemaphore) 동시에 실행되는 작업들을 관리하는 방법에 대해서 알아보겠습니다. 여러 작업을 하나의 그룹으로 관리하고 하나의 리소스에 대한 접근을 통제해야 하는 문제들을 GCD를 활용하여 해결해보겠습니다. DispatchGroup DispatchGroup 은 디스패치 큐에 추가된 작업을 가상의 그룹으로 관리합니다. 서로 다른 디스패치 큐에 추가된 작업을 동일한 그룹에 추가하는 것도 가능합니다. 여러 작업을 하나의 작업으로 묶는 것이라고 생각하면 편합니다. 그러므로 그룹에 포함된 모든 작업이 완료되어야 그룹이 완료됩니다. 예시를 통하여 그룹이 어떻게 사용되는지 알아보겠습니다. let queue1 = DispatchQueue(label: "ConcurrentQueue", attributes: .concurrent) let ..
[iOS] GCD 활용하기 1편 (DispatchQueue) 이전 포스팅에서 GCD의 기본 개념을 살펴보았다면 이제 예제 코드를 통해서 활용하는 법을 알아보도록 하겠습니다. GCD는 iOS의 Concurrency 프로그래밍의 근간을 이루는 기술입니다. Dispatch Queue는 자동으로 스레드를 생성하고 효율적으로 관리합니다. Thread pool을 통해서 Thread를 재사용하기 때문에 시스템 리소스를 적게 사용하고 성능 또한 빨라집니다. GCD는 직관적이고 단순한 API를 제공합니다. 모든 Apple 플랫폼(iOS, macOS, watchOS, tvOS)에서 동일한 API를 활용 가능하다는 것도 큰 장점입니다. GCD의 핵심 객체는 Dispatch Queue입니다. Dispatch Queue에 Block 형태로 추가하거나 WorkItem으로 캡슐화해서 추가하..
[iOS] GCD 란? (Grand Central Dispatch 기본 개념) 시스템에 의해 관리되는 Dispatch Queue들에 작업을 보내어 멀티코어 하드웨어 위에서 동시에 코드를 실행하는 Dispatch Framework에 대해 알아보도록 하겠습니다. Dispatch는 GCD(Grand Central Dispatch)로도 잘 알려져 있습니다. macOS, iOS, watchOS, tvOS의 멀티코어 하드웨어에서 동시에 코드를 실행하는 것에 대해 종합적이고 시스템적인 개선과 런타임 라이브러리들을 포함하고 있습니다. BSD subsystem, Core Foundation, Cocoa API는 모두 이러한 향상된 기능(enhancements)들을 이용하여 시스템과 어플리케이션을 더 빠르고, 더 효율적으로 실행하고, 응답성을 향상시키기 위해 확장되었습니다. 컴퓨팅하는 코어 수가 서..