Swift:后台DispatchQueue线程太慢

3

我有一个运行中的DispatchQueue.global().async线程,正在进行许多耗时的CoreData工作。

我知道这样做是不好的实践。

尽管如此,当我将所有这些重量级计算工作移回那里时,应用程序变慢了约两倍。

我认为这是因为异步任务没有获得分配给它的所有资源。有没有办法使它像主线程一样快?

谢谢。


你可以发布你要发送到队列的任务吗? - Marcio Romero Patrnogic
这是大量的代码,用于搜索存储在大型CoreData库中的引语,以查找特定单词。 - James Dorfman
1个回答

2

你可以尝试使用DispatchQueue.global()的“qos”可选参数进行实验。然而,如果你有一个持续运行而不是在任务完成后退出的程序,最好只是产生一个NSThread而不是使用全局分派队列。


2
请问能否解释一下如何使用 qos 来使它运行更快?根据阅读文档,看起来将 qos 设置为“ .userInitiated” 是您所提到的? - James Dorfman
1
QoS越高,操作系统将会花费更多的资源在其上。这将使其更快,尽管它也会更快地耗尽电池。 - Charles Srstka

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接