ios - 了解调度队列线程
问题描述
我正在从事一个从数据库中收集(1000+)数据点并每隔几秒钟更新一次的项目。为了防止我的主线程被锁定,我必须在后台线程中读取、排序和保存数据。我想了解两个后台调用之间的区别。
在本文中,作者为我们提供了一个使用后台线程的好例子,如下所示:DispatchQueue(label: "foo", qos: .utility).async {}
在这个网站的另一个例子中,我发现了一个很好的扩展DispatchQueue
. 这个不使用标签。
我知道这两种方法是不同的,但究竟如何(除了一种是扩展)?第二个问题:在再次调用之前等待后台线程活动完成其工作是最佳做法吗?或者那有关系吗?
解决方案
您自己创建的调度队列(第一个示例)和内置global
调度队列(第二个示例)的行为之间的唯一表面区别是前者是串行的(默认情况下),而后者是并发的。
第二个问题:等待是最佳实践吗
“等待”永远是不对的。如果您有多个任务要协调,您可以使用 GCD 来完成(例如调度组)。
推荐阅读
- python - 检查json dict中的键时Flask(Python)中出现意外的KeyError
- node.js - 我找不到下载的 libs 文件夹
- visual-c++ - 我需要计算给定字符串的每个单词、行和字符
- reactjs - 如何通过反应路由器链接将状态数据传递到另一个网页?
- swift - 在 Swift 中解码 API 响应
- asp.net-core - IIS 没有向 aspnetcore 发送静态文件请求
- dns - 如何使用具有不可替代令牌标准的 RNS 域?(如ERC721)
- c# - 如何使用 Visual Studio 查看/导航 asp.net 核心源代码?
- discord.py - 你如何停止让不和谐的机器人问一些东西,然后当我输入一些东西时,命令会停止,所以我不能向它发送垃圾邮件
- javascript - 是否可以在 Vue.js 中使用 python 脚本?