[Swift] GCD를 공부해봅시다.
안녕하세요, iOS 개발하는 루피입니다.
오늘은 GCD에 대해 공부해 보겠습니다.
바로 시작합니다.
GCD가 무엇인가?
GCD(Grand Central Dispatch)는 멀티코어 하드웨어의 자원을 효율적으로 활용할 수 있게 도와주는 시스템 수준의 기술입니다. 간단하게 말해, GCD를 사용하면 여러 코어에 걸쳐 작업을 병렬 처리할 수 있습니다.
많은 분들이 GCD와 Dispatch라는 용어를 같은 맥락으로 이해하는데, 공식 문서에서도 그렇게 설명하고 있네요.
GCD를 우리는 왜 알아야 하는가?
만약 우리가 오직 메인 스레드만을 이용해 앱을 만든다면 어떨까요? 간단한 앱에서는 큰 문제가 없을 수 있지만, 네트워크 통신이나 여러 Task를 동시에 처리해야 하는 복잡한 앱에서는 상황이 달라지게 되는데요!
메인 스레드가 모든 업무를 처리하게 되면, UI가 응답하지 않거나 앱이 렉 걸린 것처럼 보이게 됩니다. 아마 메인 스레드가 “살려달라”라고 외치는 상황이 발생하겠지요. ㅋㅋㅋㅋ
그래서 GCD를 통해 메인 스레드에 과도한 부담이 가지 않도록, 필요한 Task들을 별도의 DispatchQueue에 할당하여 처리할 수 있어야 합니다.
GCD가 왜 편리할까?
GCD의 가장 큰 장점은 복잡한 스레드 관리 없이도 손쉽게 작업을 분산시킬 수 있다는 점입니다. 우리가 해야 할 Task를 그냥 DispatchQueue에 넣어두면, OS가 내부적으로 스레드 풀에 맞춰 작업을 스케줄링해 줍니다.
즉, “언제, 어느 스레드에서 작업을 실행할지”를 직접 관리할 필요 없이, 단순히 Queue에 작업을 등록하기만 하면 되는 것입니다. 이것이 바로 GCD가 우리에게 제공하는 편리함입니다.
몇몇 분들은 의문이 들 수 있을 거 같은데요???
“Queue에 작업을 넣어준다고 치자, 그럼 언제 어떤 스레드에서 실행될지 직접 지정해야 하는 거 아니야?”
놀랍게도 OS가 알아서 최적의 스레드를 선택하여 작업을 실행합니다.
이 덕분에 우리는 시스템 수준의 복잡한 동시성 처리를 직접 구현하지 않아도 되며, 조금 더 수월하게 강력한 기능을 사용할 수 있는 겁니다.
정리
GCD는 메인 스레드에 모든 Task가 몰리지 않도록 분산 처리해 주는 중요한 기술이며, 복잡한 동시성 문제를 손쉽게 해결할 수 있는 도구입니다. 우리는 이러한 GCD를 DispatchQueue에 Task를 할당하는 방식으로 아주 편리하게 사용할 수 있습니다. 다음 시간에는 DispatchQueue에 대해 공부해 보도록 하겠습니다.
오늘도 화이팅입니다!!😁