GCD (Grand Central Dispatch)
여러 thread가 task를 처리할 수 있도록 Queue(Dispatch Queue)에 들어온 task를 적절하게 분배해주는 시스템
Sync / Async
sync: 코드 한 줄씩 작업 다 끝날 때 까지 기다린 다음에 다음 라인 실행 (queue에 들어간 task가 모두 완료 되어야 다음 task를 수행함)
async: 기다리는 작업없이 다음 코드라인을 바로 실행 (queue에 들어간 task가 완료 되는지에 관계 없이 바로 다음 task를 수행함)
Serial / Concurrent (Queue에서 작업을 분배하는 방법)
- Serial: 하나의 thread가 순차적으로 처리하게 된다.
- Concurrent: 여러 thread가 queue의 작업을 나눠서 동시에 일을 처리한다.
정리
Serial + sync
task가 여러개면 앞에 task가 작업 다 끝날 때까지 기다릴거고, queue에 들어가서도 하나의 스레드에서 모두 처리될거야
Serial + async
task가 여러개면 기다리지 않고 코드를 다 실행할건데, queue에 들어온 애들은 선입선출로 하나의 스레드에 모두 보내질거야
(스레드 하나가 작업하니까 결국 순서대로 실행됨)
Concurrent + sync
task가 여러개면 앞에 task 작업이 다 끝날 때까지 기다릴거야, queue에 들어오면 queue에 남아있는 작업들과 다른 thread에서 처리될 수 있으니까 빈 자리 있으면 거기서 처리해줄거야
Concurrent + async
task가 여러개면 기다리지 않고 바로 다 실행할건데, queue에 task를 여러개 넣으면 여러 thread가 나눠서 일 처리할거야
(task 작업 순서 보장 x)
'iOS' 카테고리의 다른 글
Postman으로 FCM 테스트 (FCM API v1) (3) | 2024.10.06 |
---|---|
SwiftUI에서 FCM 설정 (1) | 2024.10.06 |
iOS에서 json 처리하기 (0) | 2023.02.03 |
View Life Cycle / Frame and Bounds (0) | 2023.02.03 |
UILabel 원하는 범위만 색 변경하기 - NSMutableAttributedString 사용하기 (0) | 2022.01.16 |