2014-04-28 85 views
2

我有一个数据解析循环会导致CPU负载过重, 在双核iPhone上没问题,但在旧型号iPhone上,UI响应会变慢或甚至一段时间没有响应...(该操作不能在main线程)我可以在iOS上限制NSOperation/Thread的CPU使用率吗?

我可以限制CPU使用率吗?以及如何?

+0

这个问题的答案是即将更新异步任务在UI? 但在我的情况下,数据解析循环是一个与UI无关的后台任务,并且它在一段时间内保持100%的CPU负载,导致UI无响应。 –

回答

0

NSOperations的方法setThreadPriority:决定了它的队列中操作的优先级。优先级默认为正常。尝试将您的操作设置为次优级别NSOperationQueuePriorityLow。这将导致该操作的优先级低于主线程,并且应该让您的UI更具响应能力。因此,当然,您的任务需要更长的时间才能完成。

(编辑使用SetThreadPriority函数,而不是setQueuePriority建议)

+0

似乎'setQueuePriority:'只是在队列中的操作之间设置优先级。 –

+0

我没有用NSOperationQueues工作太多。我会用调度队列做更多的事情,而且我猜根据对文档的错误阅读,我会犯错。改为尝试'setThreadPriority:'。 –

+0

尝试将线程优先级设置为0.1,但对于UI在运行操作时仍然没有响应... :( –

相关问题