GCD 란?
Grand Central Dispatch
= 웅장한 중심부로 발송하다
?
??
번역기로 해석했는데 중심부로 보내는 것인가 보다 하고 공식 문서로 가서
자세한 내용을 읽어보자.
공식 문서에서 GCD 를 검색해보면
이곳을 확인해볼수 있는데 그 중 Overview 에 관한 부분을 읽어보면
Dispatch, also known as Grand Central Dispatch (GCD), contains language features, runtime libraries, and system enhancements that provide systemic, comprehensive improvements to the support for concurrent code execution on multicore hardware in macOS, iOS, watchOS, and tvOS.
Grand Central Dispatch(GCD)라고도 하는 Dispatch 에는 macOS, iOS, watchOS 및 tvOS의 멀티코어 하드웨어에서 동시 코드 실행 지원에 대한 체계적이고 포괄적인 개선 사항을 제공하는 언어 기능, 런타임 라이브러리 및 시스템 향상 기능이 포함되어 있습니다.
여기서 우리는 동시 코드 실행 지원인 부분을 눈 여겨 보면 될 것 같다.
결국 GCD 는 Dispatch 라고도 불리며 다중 코어 프로세서 및 기타 대칭 다중 처리 시스템이 있는 시스템에 대한 응용 프로그램 지원을 최적화하기 위해 개발된 기술로 보인다.
GCD 는 왜 필요하게 되었을까?
동시성 프로그래밍이 필요한 이유에 대해 생각해보면 이해가 될 것 같다.
다수의 코어와 스레드가 있다면 굳이 동시에 작업을 하는 것 처럼 보이는 작업을 하는 이유가 필요할까?
- 물리적인 한계
- 빠른 처리와 효율성
멀티 코어를 탑재한 CPU 가 나오고 있으나 수십개의 코어를 탑재 하긴 물리적으로 한계가 있다.
오래 걸리는 작업 A 와 금방 마무리 되는 작업 B 가 있다고 해보자.
A 를 먼저 시작하고 B 를 시작 했을 경우 A 가 끝날 때까지 B 는 대기 해야한다. 같이 실행해서 B 를 먼저 끝내도 된다면 이게 더 효율이 높아보인다.
결국 동시성 프로그래밍이 필요하게 되어 개발자가 하나의 응용프로그램이 각기 다른 코어 수를 가진 환경에서 동작할 것을 고려하며 프로그래밍 하면 많이 힘들것이다. 이것을 개발자가 아니라 apple 에서 쉽게 관리할 수 있게 해주는 것이 GCD 이다.