HIT해

GCD 본문

Swift/CS

GCD

힛해 2024. 8. 30. 00:59
728x90

GCD (Grand Central Dispatch) 란?

iOS에서 멀티코어 프로세서를 효율적으로 활용하여 동시에 여러 작업을 실행할 수 있게 해주는 프레임워크이다. GCD는 멀티스레드 환경에서 작업을 적절히 분배하여 병렬 처리를 지원하고, 스레드 관리를 간소화하는 방법을 제공한다.

주요 개념

  • Dispatch Queue: GCD에서 작업을 큐에 추가하면, 이 큐를 통해 작업이 스레드에서 실행된다. 큐는 FIFO(First-In-First-Out) 방식으로 작업을 처리하며, 동시성 처리를 지원한다.
  • Types of Dispatch Queues:
    • Global Queue: 전역 큐로, 여러 큐 중 하나를 선택하여 사용하며, 주로 비동기 작업을 처리할 때 사용된다.
    • Main Queue: 주 스레드에서 실행되는 큐로, UI 업데이트와 같은 메인 스레드에서 실행해야 하는 작업에 사용된다.
    • Custom Queue: 프로그래머가 직접 생성할 수 있는 큐로, 특정 요구 사항에 맞게 작업을 처리할 수 있다.

작업 추가 및 실행

  • 비동기 작업 (Async): 비동기적으로 작업을 추가하면, 작업이 즉시 실행되지 않고 큐에 추가되며, 다른 작업과 병렬로 실행될 수 있다.
DispatchQueue.global().async { // 백그라운드 스레드에서 실행될 코드 }
  • 동기 작업 (Sync): 동기적으로 작업을 추가하면, 현재 스레드에서 작업이 완료될 때까지 대기한다. 주로 메인 스레드에서 다른 작업을 기다리게 할 때 사용된다.
DispatchQueue.main.sync { // 메인 스레드에서 실행될 코드 }

사용 예

  • 비동기 작업: 백그라운드에서 데이터 처리, 네트워크 요청 등의 작업을 수행할 때 유용하다.
DispatchQueue.global(qos: .background).async { // 백그라운드에서 긴 작업 수행 }
  • UI 업데이트: 메인 스레드에서 UI 요소를 업데이트할 때는 주 스레드를 사용해야 한다.
DispatchQueue.main.async { // UI 업데이트 코드 }

장점

  • 효율적인 스레드 관리: GCD는 스레드의 생성을 자동으로 관리하며, 작업이 완료되면 스레드를 반환하여 효율적인 리소스 관리를 지원한다.
  • 병렬 처리: GCD를 통해 여러 작업을 동시에 처리할 수 있어, 성능이 향상되며 응답성을 높일 수 있다.
  • 코드 간결성: 비동기 작업을 처리하는 코드가 간결해지며, 직접 스레드를 관리하는 복잡성을 줄일 수 있다.
 

'Swift > CS' 카테고리의 다른 글

[iOS/SwiftUI] defer  (0) 2024.08.30
[iOS/TCA] TwoCounters로 TCA Scope알아보기  (0) 2024.08.30
KVC vs KVO  (0) 2024.08.30
[iOS/TCA] 01-GettingStarted-Animations  (0) 2024.08.29
[iOS/SwiftUI] TCA 프로젝트 뜯어보기  (0) 2024.08.26