카테고리 없음

swift DispatchQueue의 기본 사용법

kingarthur 2024. 7. 24. 19:38

어느순간 디스패치 큐를 배워서 사용하고 있는데 정확하게 먼지 이해를 못해서 다시 공부를 하게되었다.

 

DispatchQueue는 iOS 및 macOS 애플리케이션에서 비동기 작업을 관리하는 데 사용되는 중요한 개념입니다. DispatchQueue는 Grand Central Dispatch(GCD)의 일환으로, 시스템의 모든 CPU 코어를 효율적으로 활용하여 작업을 병렬로 수행할 수 있도록 도와줍니다. 이를 통해 응용 프로그램의 성능을 향상시키고, 사용자 인터페이스(UI)의 반응성을 유지할 수 있습니다.

DispatchQueue의 기본 사용법

1. 기본 개념

DispatchQueue에는 두 가지 주요 유형이 있습니다.

  1. Main Queue: 이 큐는 주로 UI 업데이트를 위해 사용되며, 메인 스레드에서 작업을 실행합니다.
  2. Global Queue: 이 큐는 백그라운드 작업을 위해 사용되며, 시스템에서 제공하는 여러 우선순위의 글로벌 큐를 사용할 수 있습니다.

2. 작업을 DispatchQueue에 배치

작업을 큐에 배치하는 것은 매우 간단합니다. async와 sync 메서드를 사용하여 작업을 비동기 또는 동기적으로 큐에 추가할 수 있습니다.

  • 비동기 작업 (async): 작업을 비동기적으로 실행하며, 큐에 추가된 후 즉시 반환합니다.
  • 동기 작업 (sync): 작업을 동기적으로 실행하며, 작업이 완료될 때까지 현재 스레드를 블록합니다.

DispatchQueue의 주요 기능

  1. 작업의 비동기 처리: 작업을 비동기적으로 실행하여, 메인 스레드가 블록되지 않도록 하고, 애플리케이션이 더 반응성을 유지할 수 있게 합니다.
  2. 작업의 동기 처리: 작업을 동기적으로 실행하여, 특정 순서로 작업이 실행되도록 보장합니다.
  3. QoS(Quality of Service): 작업의 우선순위를 지정하여, 중요한 작업이 더 빨리 실행되도록 할 수 있습니다. 예를 들어, userInitiated, userInteractive, utility, background 등이 있습니다.
  4. 작업 그룹(DispatchGroup): 여러 작업을 그룹으로 묶어서, 모든 작업이 완료될 때까지 기다리거나 특정 작업을 수행할 수 있습니다.

DispatchQueue를 사용하는 이유

  • UI 업데이트 및 백그라운드 작업 분리: 메인 스레드에서 UI 업데이트를 수행하고, 백그라운드 스레드에서 시간이 많이 걸리는 작업을 수행함으로써 UI가 멈추지 않고 반응성을 유지할 수 있습니다.
  • 멀티스레딩 관리: 개발자가 직접 스레드를 관리할 필요 없이, GCD를 통해 효율적으로 멀티스레딩을 구현할 수 있습니다.
  • 성능 최적화: 시스템의 모든 CPU 코어를 효율적으로 활용하여, 작업을 병렬로 수행함으로써 성능을 향상시킬 수 있습니다.
        DispatchQueue.main.asyncAfter(deadline: .now() + 2.0) {
            self.showMainScreen()
        }
        
            // 모달창 메인 페이지로 이동
    private func showMainScreen() {
        let mainVC = LoginViewController()
        mainVC.modalPresentationStyle = .fullScreen
        self.present(mainVC, animated: true, completion: nil)
    }

나는 이렇게 해서 사용을 하였다 ~  아주 편리하구먼

배워야 산다