디스패치큐(GCD)의 종류와 특성

junseole·2021년 11월 3일
0
post-thumbnail

iOS Concurrency(동시성) 프로그래밍, 동기 비동기 처리 그리고 GCD/Operation - 디스패치큐와 오퍼레이션큐의 이해를 보고 정리한 글입니다.

큐의 종류

1) 메인 큐

(유일한)한개, 시리얼, 메인쓰레드

DispathQueue.main.async{}

이런식으로 명명한다.

2) 글로벌 큐

  • Dispatch.Queue.global(qos: .userInteractive)

    유저와 직접적 인터렉티브 : UI업데이트, 애니메이션, UI반응관련 어떤 것인든 (사용자와 상호 작용) 거의즉시

  • Dispatch.Queue.global(qos: .userInitiated)

    유저가 즉시 필요하긴 하지만, 비동기적으로 처리된 작업(ex. 앱 내에서 pdf파일을 여는것과 같은) 몇 초

  • Dispatch.Queue.global()

    일반적인 작업 디폴트

  • Dispatch.Queue.global(qos: .utility)

    보통 Progress Indicatior와 함께 길게 실행되는 작업, 계산, IO, Networking, 지속적인 데이터 feeds 몇초에서 몇분

  • Dispatch.Queue.global(qos: .background)

    유저가 직접적으로 인지하지 않고(시간이 안 중요함) 작업, 데이터 미리가져오기, 데이터베이스 유지 속도보다는 에너지 효율성 중시, 몇분이상

  • Dispatch.Queue.global(qos: .unspecified)

    legacy API

3) 프라이빗

커스텀 하게 만듦 , 디폴트 설정 (Serial), (Concurrent설정 가능), Qos 설정도 가능

  • 생성방법

    let queue = DispatchQueue(label: "com.inflearn.serial")
    
    let queue2 = DispatchQueue(label: "com.inflearn.concurrent", attributes: .concurrent)
profile
Swift와 함께 여행중입니다.

0개의 댓글