iOS developer essential skills/Modern Concurency
Modern Concurrency Deep Dive(7)
jgkim1008
2024. 11. 20. 23:37
Task.Sleep
- GCD의 sleep과 Task.sleep의 차이는 blocking과 Non-blocking의 차이이다
- GCD의 sleep은 blocking 됨(mainThread에 사용하면 안됨)
- Task의 sleep은 sleep되면 시스템에 Thread를 반납해 다른 동작을 처리할수 있음.
병렬 처리가 아닌경우
func fetch(urlArray: [String]) async -> [UIImage] {
var array: [UIImage] = []
for url in urlArray {
// 하나 실행되고 기다리고 하나실행됨(병렬 처리가 아님)
if let image = await fetchImage(url) {
array.append(image)
}
//TODO: - 병렬처리
Task {
if let image = await fetchImage(url) {
array.append(image)
}
}
}
}
- task 로 묶어 하나의 비동기 작업으로 구현하여 기다리지 fetchImage를 기다리지 않고 계속 for문을 실행