-
[iOS] - GCD에 대해서(2/4)iOS/iOS 2024. 3. 16. 15:07728x90반응형
이전 포스팅
[Swift] - GCD를 알아야하는 이유(1/4)
오늘은 최근에 했던 컴퓨터구조 스터디를 기반으로 포스팅을 해보겠다. 스터디의 내용은 메인스레드에 관한 내용이였고, 그중 swift에서 사용하는 GCD를 자세하게 공부했다. 자 한번 가보자 메인
quarang.tistory.com
GCD(Grand Central Dispatch)
전 포스팅에서 스레드는 개발자가 생성하고 관리한다고 얘기했는데, 물론 이것을 수동으로 추가하는 언어가 있지만 swift는 그렇지가 않다. 오늘의 주인공인 GCD라는 것이 존재하기 때문이다.
GCD는 다중 스레딩 환경에서 비동기 작업을 조율하기 위한 시스템이다. iOS, macOS 및 기타 Apple 플랫폼에서 비동기적인 작업을 효율적으로 관리하는 데 사용된다.
하는일을 정리하면 그렇다는 뜻인데, 이게 감이 잘 오지 않을 수 있다.
C나 C++같은 경우 스레드를 생성하고 관리하는 작업을 개발자가 직접 해줘야하지만, iOS에서는 우리가 하는 작업(task)들을 메인스레드가 아닌 다른 스레드로 옮길 수 있는 GCD 클래스를 제공한다. GCD는 비동기적업을 처리하기 위해 일단 작업을 적절한 순서대로 줄을 세우고 각각 할당을 해주기 수월하게 하기 위해 큐(Queue)를 사용한다.

편의를 위해 그림을 그려보았다.
메인스레드에서만 GCD를 쓸 수 있는것은 아니다. 다른 스레드에서도 또 다른 스레드로 작업을 보내는것이 가능하다.
GCD에서 사용하는 큐는 Dispatch Queue라고 부른다.
큐는 후입선출(LIFO)구조를 하고 있다. 큐를 사용하는 이유는 스레드 관리를 순차적으로 하기 위함이다. 비동기적으로 작동하더라도 할당하는 순서를 GCD가 알아야할 것이고, 애초에 보내주는 순서까지 뒤죽박죽이면 관리라는 말을 사용할 수 없을 것이다.
개발자는 이 Dispatch Queue의 타입을 지정하고 작업들의 실행방식을 결정하여, 여러 방식대로 스레드를 관리할 수 있다.
타입에 관한 설명은 뒷 포스팅에서 설명할 것이다. 하지만 그전에 알아야 할것들이 있으니..
바로 GCD에서는 작업을 어떻게 분배하며, 어떤방식으로 동작할지다.
그 방식은 동기(synchronuos)와 비동기(Asynchronour), 직렬(Serial)과 동시(Concurrency) 이렇게 나뉜다.
방식들에 대한 포스팅은 다음 포스팅에서 설명하겠다.
다음포스팅
[iOS] - 비동기와 동기(3/4)
이전 포스팅 [Swift] - GCD에 대해서(2/4) 이전 포스팅을 읽고 읽어주길 바란다. https://quarang.tistory.com/71 [Swift] - GCD를 알아야하는 이유(1/4) 오늘은 최근에 했던 컴퓨터구조 스터디를 기반으로 포스팅
quarang.tistory.com
'iOS > iOS' 카테고리의 다른 글
[iOS] - 직렬과 동시(4/4) (3) 2024.03.16 [iOS] - 비동기와 동기(3/4) (1) 2024.03.16 [iOS] - GCD를 알아야하는 이유(1/4) (0) 2024.03.16 [iOS] - Swift에 대하여(Feat. UIkit,SwiftUI) (0) 2024.01.09 [iOS] - URLSession VS Alamofire (1) 2023.12.07