Swift 面试题
目录

Swift 中如何使用 Dispatch 框架 (libdispatch/GCD)?

· 约 4 分钟读完 · 第 142 / 196 章

推荐答案

本题详细解读

1. 队列类型

  • 串行队列 (Serial Queue): 任务按顺序执行,一次只执行一个任务。
  • 并发队列 (Concurrent Queue): 任务可以同时执行,适用于需要并行处理的场景。

2. 主队列

  • 主队列 (Main Queue): 是一个特殊的串行队列,所有与UI相关的操作都必须在主队列中执行。

3. 异步与同步执行

  • async: 异步执行任务,不会阻塞当前线程。
  • sync: 同步执行任务,会阻塞当前线程直到任务完成。

4. DispatchGroup

  • DispatchGroup: 用于管理一组任务的执行,可以等待所有任务完成后再执行后续操作。

5. DispatchWorkItem

  • DispatchWorkItem: 封装一个任务,可以在不同的队列中执行。

6. DispatchSemaphore

  • DispatchSemaphore: 用于控制并发任务的数量,通过信号量机制来限制同时执行的任务数。

7. 实际应用场景

  • 主队列: 用于更新UI。
  • 串行队列: 用于需要顺序执行的任务,如文件读写。
  • 并发队列: 用于需要并行处理的任务,如网络请求。
  • DispatchGroup: 用于等待多个异步任务完成后再执行某个操作。
  • DispatchSemaphore: 用于限制资源访问的并发数,如数据库连接池。