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
相关产品推荐
相关产品推荐

