You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift中是否需手动指定DispatchQueue为串行队列?

在Swift中创建串行队列的正确方式

你不需要专门找.serial枚举选项,因为串行队列是DispatchQueue的默认队列类型,不需要额外指定attributes参数就能创建。

创建串行队列的两种写法:

  • 最简写法(推荐):
    let queue = DispatchQueue(label: "My Awesome Queue")
    
  • 显式传入空属性集合的写法:
    let queue = DispatchQueue(label: "My Awesome Queue", attributes: [])
    

为什么没有.serial选项?

DispatchQueue的Attributes枚举只提供了.concurrent(标记队列并发)和.initiallyInactive(标记队列初始化后不自动激活)两个选项。串行作为默认行为,不需要额外枚举值来声明——只要不指定.concurrent,队列就是串行的。

验证你的预期行为

用上面的串行队列执行你给出的代码:

queue.async {
    // do task 1
}

queue.async {
    // do task 2
}

任务1会先启动并执行完成,之后任务2才会启动并完成,完全符合你的预期。

内容的提问来源于stack exchange,提问作者AlanSTACK

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 12:45:46