【问题标题】:Core Data, MOCs, and multi-threading核心数据、MOC 和多线程
【发布时间】:2010-07-20 13:50:29
【问题描述】:

一个概念问题:

我通过 Core Data SQLite 为 iPhone 应用程序分层存储数据。我希望根据对象的整个分层排列中每个对象的属性来绘制和执行计算。绘图和计算任务都访问相同的确切属性。很简单。但是,我预计在主线程上执行绘图和计算会导致 UI 响应性出现一些问题。第一次使用两个 MOC 访问相同的数据但在不同的线程上对我来说听起来有点傻(遍历树两次,每个线程一次)。老实说,我不相信多线程会有太大帮助。

有人会列举在这种特殊情况下实现合理应用性能的通用选项吗?

谢谢。

【问题讨论】:

  • 您的绘图和计算活动是否完全独立?即你的绘图程序会使用这些计算的输出吗?
  • 正确:它们是独立的。这种独立性是我想到上述问题的原因。

标签: objective-c core-data


【解决方案1】:

首先,并且永远不要在没有实际性能数据的情况下做出此类设计决策。您需要分析单线程和多线程方法。也就是说,Core Data 多线程的最佳实践规定每个线程一个NSManagedObjectContext,但一个NSPersistentStoreCoordinator。因为行级缓存是在持久存储协调器中完成的,所以您的多次遍历可能不会产生不合理的开销。

【讨论】:

  • +1 “不要在没有实际性能数据的情况下做出此类设计决策。”
  • Barry:您能否为您所做的行级缓存注释提供文档参考?
  • 嗯,这是来自 Core Data 开发人员 Ben Trumbull 的回复。这证实了我刚才所说的。我在官方文档中没有看到任何明确的说明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-02
  • 2011-02-07
  • 2013-01-17
  • 2020-12-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多