새소식

iOS/Swift

[Swift] Dispatch (1)

  • -

Dispatch (Framework)

시스템에서 관리하는 Dispatch 대기열에 작업을 제출하여 Multi Core 하드웨어에서 코드를 동시에 실행

  • GCD(Grand Central Dispatch)라고 알려진 Dispatch에서는 macOS, iOS, watchOS 및 tvOS의 멀티코어 하드웨어에서
    동시 코드 실행 지원에 대한 체계적이고 포괄적인 개선사항을 제공하는 언어 기능
  • Runtime 라이브러리 및 시스템 개선사항이 포함되어 있음
 

Dispatch | Apple Developer Documentation

Execute code concurrently on multicore hardware by submitting work to dispatch queues managed by the system.

developer.apple.com


DispatchQueue (Class)

앱의 Main Thread 또는 Background Thread에서 작업의 순차적(Serially) 또는 연속적(concurrently)으로 실행을

관리하는 객체

  • App이 블록 객체 형태로 작업을 제출할 수 있는 FIFO Queue
  • DispatchQueue는 작업을 직렬(Serially) 또는 동시(Concurrently)에 실행
  • 제출된 작업은 System이 관리하는 Thread에서 실행 가능
  • 앱의 Main Thread를 나타내는 DispatchQueue를 제외하고 System은 작업을 실행하는데 어떤 Thread를 사용하는지 보장하지 않음
  • 작업 항목을 synchronously(동기) 또는 asynchronously(비동기)로 예약
  • 작업 항목을 synchronously(동기)로 예약하면 해당 항목의 실행이 완료될 때까지 대기
  • 작업 항목을 asynchronously(비동기)로 예약하면 작업 항목이 다른 곳에서 실행되는 동안 코드가 계속 실행
    Main Thread에서 작업항목을 동기(sync)로 실행하려고 하면 교착 상태(Deadlock)가 발생함

과도한 Thread 생성 방지

  • 동시(concurrent) 실행을 위한 작업을 설계할 때 현재 실행 Thread에서 차단하는 method를 호출하지 마세요
    → 동시 DispatchQueue에 의해 예약된 작업이 Thread를 차단하면 System은 queue(대기열)에 있는 다른 동시 작업을 실행하기 위해 추가 Thread를 생성
    → 너무 많은 작업이 차단되면 System에서 App Thread가 부족해질 수 있음
 

DispatchQueue | Apple Developer Documentation

An object that manages the execution of tasks serially or concurrently on your app's main thread or on a background thread.

developer.apple.com

 

728x90

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

[iOS] LocalAuthentication  (0) 2024.01.06
[Swift] URL, URLComponents  (0) 2023.12.30
[Swift] RelativeDateTimeFormatter(상대시간)  (0) 2023.11.20
[Swift] 공식문서 파헤치기 (Array, Set, Dictionary)  (0) 2023.11.11
[Swift] UISceneDelegate  (0) 2023.11.09
Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.