2017-08-02 71 views
1

我有一個DispatchQueue.global().async線程正在運行,這是很耗時的CoreData工作。Swift:Background DispatchQueue線程太慢

我知道這是不正確的做法。儘管如此,當我將所有這些繁重的計算工作移回到那裏時,應用程序的速度卻大大降低了一倍。

我假設這是因爲異步任務沒有獲得分配給它的所有資源。有沒有辦法使它像主線一樣快?

謝謝。

+0

你可以發送你發送給隊列的任務嗎? –

+0

這是很多很多的代碼來搜索一個巨大的CoreData存儲的引號,特定的單詞。 –

回答

1

您可以試試DispatchQueue.global()中的「qos」可選參數。但是,如果您的任務完成後持續運行而不是退出,則最好只產生一個NSThread,而不是使用全局調度隊列。

+0

您能否解釋一下我可以如何使用qos讓它跑得更快?基於閱讀文檔,它看起來像設置qos到'.userInitiated'是你所指的? –

+0

QoS越高,操作系統將花費的資源越多。這將使其更快,但它也會使電池更快地耗盡電池。 –