본문 바로가기
iOS

DispatchQueue, sync 와 async

by 융식 2022. 6. 10.

 

DispatchQueue : 

메인 스레드가 아닌 별도의 스레드에서 처리해준 후 결과 값만 메인 스레드로 넘겨주어 화면에 표시하도록 CPU를 관리할 수 있습니다.

 

DispatchQueue의 종류 : Seral   /   Concurrent

 

Seral (main 스레드) : 한 작업이 끝날 때 까지 대기. 순차적으로 진행하는 Queue형태 

 

Concurrent (병렬 스레드) : 대기열에 있는 작업도 다른 스레드로 병렬로 처리하여 동시에 처리할 수 있게 합니다.

Qos를 주어 우선순위 지정 가능합니다. (링크 참고)

 
DispatchQueue.global(qos: .userInteractive) {} //Main Queue
 
DispatchQueue.global(qos: .userInitiated) {} //유저가 시작한 작업, 유저가 응답을 기다림
 
DispatchQueue.global(qos: .default) {} //userInitiated와 utility의 중간
 
DispatchQueue.global(qos: .utility) {} //시간이 걸리며 즉각적인 응답이 필요하지 않은 경우
 
DispatchQueue.global(qos: .background) {} //눈에 보이지 않는 부분의 작업. 완료 시간 중요X
 
DispatchQueue.global(qos: .unspecified) {}

 

Sync : synchronously 동기

작업이 다 끝나야만 현재의 Queue에게 컨트롤을 넘깁니다. 즉 현재의 Queue는 block상태로 있고 끝나야 실행됩니다.

 

Async : Asynchronous 비동기

작업을 수행할 다른 Queue에게 작업을 넘김과 동시에 현재의 Queue에게 컨트롤을 돌려줍니다. 작업이 끝나기 전까지 기다릴 필요 없고 동기와 반대로 block상태가 되지 않습니다.

 

https://seons-dev.tistory.com/entry/Swift-DispatchQueue%EB%9E%80-GCD-Grand-Central-Dispatch

 

Swift : 기초문법 [DispatchQueue란?] (GCD : Grand Central Dispatch)

GCD  에 대해 알아보도록 합시다. DispatchQueue DispatchQueue 는 작업 항목의 실행을 관리하는 클래스입니다. DispatchQueue 는 장점은 일반 Thread 보다 쉽고 효율적으로 코드를 작성할 수 있습니다. 보통 서

seons-dev.tistory.com

 

'iOS' 카테고리의 다른 글

AVCapture Session  (0) 2022.10.17
iOS ARKit LiDAR 에 대해  (0) 2022.09.27
Pencil Kit (iPadOS) - 기초편  (0) 2022.09.21
View Life Cycle  (0) 2022.09.06
Watch Connectivity (watchOS)  (0) 2022.07.31