[随笔] Swift 异步:Task vs DispatchQueue
💡
原文中文,约1400字,阅读约需4分钟。
📝
内容提要
本文介绍Swift中执行异步函数的两种方法:Task和DispatchQueue,包括队列类型、执行方式和优先级。主线程主要用于修改UI。关键词:Swift、异步、Task、DispatchQueue、主线程。
🎯
关键要点
- Swift中执行异步函数的两种方法是Task和DispatchQueue。
- Swift支持多线程和异步,存在主线程和多个后台线程。
- 每个线程有多个队列,包括全局队列和自定义队列。
- 队列存在优先级概念,Task中称为priority,DispatchQueue中称为qos。
- 主线程主要用于UI操作,只有在主线程才能修改UI。
- Task的@MainActor用于在主线程执行,但可能存在非主线程执行的情况。
- DispatchQueue依赖于Grand Central Dispatch (GCD),执行顺序为先进先出。
- DispatchQueue分为serial和concurrent两种类型,main是serial类型。
- 执行方式有sync和async,sync会等待任务完成,async会直接返回。
- 在主线程执行DispatchQueue.main.sync会导致死锁。
🏷️
标签
➡️