[随笔] 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会导致死锁。
➡️

继续阅读