1

当我的循环运行大约 15k 次时,正在使用过多的 CPU。它始终在 90 -100 % 的范围内。我在循环中所做的是一系列核心数据实体更新/创建。为什么会这样?我正在后台运行我的进程,并且我也将线程优先级指定为最小值!

4

1 回答 1

2

Paul R 是正确的 - 系统将在其拥有的资源的情况下尽快完成循环中的任务。在这种情况下,它在托管对象上下文中操作核心数据对象,而不是提交到磁盘,因此它执行速度的唯一限制是 CPU 时间。

这会导致 UI 线程问题吗?从理论上讲,如果 UI 线程想要 CPU 时间,它应该占用它。sleep() 可以解决这个问题,但并不理想,因为您的后台任务需要更长的时间才能完成。

如果是这样,有没有办法打破工作,所以它可以比 15k 项目循环更简单地分块?

循环中是否使用互斥锁/@synchronise 运行?这可能会导致延迟,然后它会在请求时降低其 CPU 时间,这可能会导致 UI 滞后。

于 2012-08-06T13:47:35.557 回答