Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GCD에 대해 설명해주세요. #21

Open
youn9k opened this issue Jan 4, 2025 · 3 comments
Open

GCD에 대해 설명해주세요. #21

youn9k opened this issue Jan 4, 2025 · 3 comments

Comments

@youn9k
Copy link
Collaborator

youn9k commented Jan 4, 2025

GCD

  • 개발자가 직접 스레드풀관리를 하지 않고 작업을 생성하고 실행하도록 도와주는 API를 제공한다.
  • DispatchQueue를 통해서 작업을 serial 또는 concurrent하게 처리할 수 있다.
@Kiyoung-Kim-57
Copy link
Collaborator

GCD는 멀티코어 하드웨어 환경에서 동시 코드 실행을 지원하기 위해 설계된 애플의 동시성 프레임워크이다.
GCD에서는 여러 작업들을 디스패치 큐라는 작업 큐를 이용해 처리할 수 있다. 디스패치 큐는 Serial 큐, Concurrent 큐로 유형이 구분되어 작업의 순서와 실행 방식을 결정할 수 있다.
또한 각 작업 큐에 동기, 비동기적으로 작업들을 추가할 수 있다.
GCD에서 또 중요한 개념으로는 QoS(Quality of Service)가 있다. 이를 사용하면 각 작업의 우선순위를 설정하여 중요한 작업을 우선적으로 처리할 수도 있다.

최근에는 GCD에서 가독성, 에러 처리, 동시성 안전성 문제를 개선한 Swift Concurrency가 등장했다.

@hsw1920
Copy link
Owner

hsw1920 commented Jan 9, 2025

Q. GCD에 대하여 설명해주세요.
A.
GCD는 iOS에서 멀티스레딩을 위한 스레드풀 관리를 도와주는 API입니다. 직접적인 스레드풀 관리는 개발자가 직접 하기 어렵기 때문에 스레드관리의 복잡성을 줄여주며 작업 기반의 멀티스레딩 구현을 가능하게 합니다.

GCD는 Dispatch Queue를 통해 작업을 관리하며, 작업을 Serial, Concurrent하게 실행하는 것을 지원합니다.
프로그래머가 작업을 생성하고 Dispatch Queue에 추가하면, GCD는 해당 작업에 맞는 스레드를 자동으로 생성하여 실행하고 작업이 종료되면 해당 스레드를 재활용하거나 반환합니다.

GCD는 Dispatch Queue를 통해 Main Queue(Serial Queue)와 Global Queue(Concurrent Queue) 2가지 타입의 큐를 제공합니다.
Main Queue를 통해 작업을 순차적으로 처리하는 Serial Queue 역할을 제공하고, App의 메인 스레드에서 실행됩니다. 주로 UI 관련 작업을 처리합니다.
Global Queue는 동시에 여러개의 작업을 병렬적으로 처리하는 Concurrent Queue 역할을 제공합니다.
또한 UI와 무관한 백그라운드 작업을 처리하며 QoS를 통해 우선순위를 설정할 수 있습니다.

답변의도

  • GCD와 멀티스레딩을 연관지어 설명한다.
  • GCD에서 제공하는 Main/Global 큐를 설명한다.

@0Hooni
Copy link
Collaborator

0Hooni commented Jan 10, 2025

GCD는 애플에서 동시성 프로그래밍을 위해 지원해주기 위해 저수준 API로 제공해주는 다중 스레드 프로그래밍 기술입니다. 이를 통해 개발자는 복잡한 스레드 생성 및 관리 없이도 비동기 작업을 손쉽게 처리할 수 있습니다.

GCD에서는 여러 작업을 처리하기 위해 Dispatch Queue를 사용하여 작업을 관리하며, 메인 큐와 글로벌 큐 두 종류의 큐로 다양한 비동기 작업을 쉽게 처리할 수 있게 해줍니다.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants