개발하자 중엽아
  • [Swift] GCD 요약
    2025년 02월 09일 11시 16분 06초에 업로드 된 글입니다.
    작성자: 이중엽

    동시성 프로그래밍

    • 여러 작업을 동시에 실행

    Swift에는 이러한 동시성 프로그래밍을 가능캐 해주는 2가지 기능이 있다.

    1. Dispatch Queue
    2. Operation Queue

    GCD(Grand Central Dispatch)

    Dispatch Queue는 FIFO Queue형태로 작업을 순서대로 전달받는다.

    Serial / Concurrent

    Serial

    • 이전 작업이 끝나면 다음 작업을 시작하는 직렬 형태
    • 아무런 설정을 하지 않으면 Serial로 동작

    Concurrent

    • 추가된 작업을 동시에 처리

    Sync / Async

    Sync

    • 큐에 추가된 작업이 완료될때까지 기다림

    Async

    • 큐에 추가된 작업의 완료를 신경쓰지 않음

    Main / Global

    Main

    • Main Thread가 해당 작업을 맡음
    • Default는 Serial로 동작하나 Concurrent로 변경 가능

    Global

    • Concurrent로 실행되나, QoS를 통해 우선순위를 정할 수 있음

    Dispatch Group

    Dispatch Queue로 처리된 모든 작업이 완료된 시점을 파악하기 위하여 사용한다.

    • enter로 Group에 queue를 넣음
    • leave로 해당 queue가 완료되었음 알려줌
    • Group에 enter로 들어간 모든 queue가 leave하면 notify로 모든 작업이 수행됨을 알려줌

    Dispatch WorkItem

    • Dispatch Queue를 클로저 형태로 저장할 수 있다.
    • cancel을 통해 작업을 취소할 수 있다.
    • notify로 다음 Task를 지정할 수 있다.
    
    let item = DispatchWorkItem {
        print("123")
    }
    
    DispatchQueue.global().async(excute: item)
    

    Dispatch Semaphore

    동시 작업 개수를 제한한다.

    임계구역에 들어갈 땐 wait(), 나올 땐 siginal()

    'Swift' 카테고리의 다른 글

    [Swift] final 키워드와 Dispatch를 통한 성능 향상  (0) 2025.02.09
    [Swift] Any와 AnyObject의 차이  (0) 2025.02.08
    [Swift] ARC  (0) 2025.02.08
    댓글