Swift
[Swift] DispatchQueue.global() 과 Task.detatched(priority: .background) 의 차이점
insub4067
2023. 10. 24. 12:01
Task | Apple Developer Documentation
A unit of asynchronous work.
developer.apple.com
DispatchQueue.global().async {
// background work
}
// struct 이기 때문에 변수에 할당 가능
let task = Task.detatched(priority: .background) {
try await doSomethingBadAss()
}
Task {
// task.result 로 결과를 예외 처리 가능
switch await task.result {
case .success(let result):
break
case .failure(let error):
break
}
// failure 처리 안할꺼면 그냥 value (success 에 대한 return) 만 받을 수도 있음
await task.value
}
// 맘 바뀌면 실행중인 테스트 블록을 취소해 버릴수도 있음
task.cancel()
둘다 Sendable 이라서 data race 에 안전하긴 함!