ios - Swift 在后台线程中按顺序异步运行多个代码块
问题描述
如果下面的代码在同一个线程上,它是否保证按顺序运行?如果没有,有没有办法确保异步后台任务按顺序执行?
DispatchQueue.global().async {
print("a")
}
DispatchQueue.global().async {
print("b")
}
解决方案
DispatchQueue.global()
是一个并发队列,这意味着任何 2 个任务将并行运行,无论 1 结束第一个
如果您需要串行运行它们,那么要么一个接一个地链接它们,要么创建一个自定义串行队列并像在其中调度任务一样
let serialQueue = DispatchQueue(label: "queuename")
serialQueue.sync {
// task 1
}
serialQueue.sync {
// task 2
}
推荐阅读
- r - 多个指标、多个用户、多个事件、R
- c - c程序的窗口大小调整影响元素位置
- java - 如何根据多个 RxJava Completable 结果的结果执行操作
- mysql - 如何检查一对多表中的重复项
- ubuntu - 在 Ubuntu 18.04 上运行 Hyperledger Fabric 网络时出现问题 - BYFN.SH Up
- ios - 使用未解析的标识符“GradientView”
- html - Bootstrap 单个全宽列
- ios - App Tracking Transparency 如何影响显示广告的应用程序?- IDFA iOS14
- oracle - 为什么这个查询没有返回结果
- python - 使用 boto 和 IAM ARN 在 S3 上放置文件