2017-08-02 72 views
1

我有一个DispatchQueue.global().async线程正在运行,这是很耗时的CoreData工作。Swift:Background DispatchQueue线程太慢

我知道这是不正确的做法。尽管如此,当我将所有这些繁重的计算工作移回到那里时,应用程序的速度却大大降低了一倍。

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

谢谢。

+0

你可以发送你发送给队列的任务吗? –

+0

这是很多很多的代码来搜索一个巨大的CoreData存储的引号,特定的单词。 –

回答

1

您可以试试DispatchQueue.global()中的“qos”可选参数。但是,如果您的任务完成后持续运行而不是退出,则最好只产生一个NSThread,而不是使用全局调度队列。

+0

您能否解释一下我可以如何使用qos让它跑得更快?基于阅读文档,它看起来像设置qos到'.userInitiated'是你所指的? –

+0

QoS越高,操作系统将花费的资源越多。这将使其更快,但它也会使电池更快地耗尽电池。 –