首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >核心数据多线程性能

问核心数据多线程性能
EN

Stack Overflow用户
提问于 2014-01-16 10:49:59
回答 3查看 390关注 0票数 1

我正在开发一个将核心数据用于内部存储的应用程序。该应用程序具有以下功能:

  1. 通过下载和解析大型XML文件与服务器同步数据,然后用核心数据保存条目。
  2. 允许用户进行取取(大数据取)和CRUD操作。

为了使用Core数据应用多线程,我已经阅读了大量的文档,需要遵循几种模式:

  1. 嵌套上下文:这种模式似乎存在许多性能问题(子上下文在生成获取时阻塞祖先)。
  2. 使用一个主线程上下文和后台工作人员上下文。
  3. 使用单个上下文(主线程上下文)并使用GCD应用多线程。

我尝试了上述三种方法,并意识到最后两种方法可以正常工作。然而,在谈到性能时,我不确定这些方法是否正确。

为了使实现上述功能的健壮应用程序,是否需要应用一个众所周知的表演性模式?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-01-17 13:39:22

罗克里迪

在我的推特iOS应用程序,Retweever和#chat中,我使用了一个简单的两种MOC模型。所有数据库插入和删除都是在私有并发insertionMOC上进行的。主MOC通过来自-save:的insertionMOC通知进行合并,并在合并处理期间发出自定义UI更新通知。这让我可以以一种有步骤的方式工作。所有进入应用程序的推文都在后台进行处理,并在完成所有操作后呈现给用户界面。

如果你下载这些应用程序,#chat的引擎已经现代化,比Retweever的引擎更高效,更远离主线程。

安农,安德鲁

票数 1
EN

Stack Overflow用户

发布于 2014-01-16 11:37:37

Apple建议对每个线程使用单独的上下文。

使用Core数据进行并发编程所推荐的模式是线程限制:每个线程必须有自己的完全私有的托管对象上下文。采用这种模式有两种可能的方法:为每个线程创建一个单独的托管对象上下文,并共享一个持久存储协调器。这是典型的推荐方法。为每个线程创建单独的托管对象上下文和持久存储协调器。这种方法提供了更大的并发性,而牺牲了更大的复杂性(特别是当您需要在不同上下文之间交流更改时)和增加内存使用量。

见苹果文档

票数 1
EN

Stack Overflow用户

发布于 2014-01-16 11:41:00

根据apple文档,使用线程限制来支持并发,每个线程创建一个托管对象上下文。这会让你的生活更轻松。这是用于在后台解析大型数据以及在主线程上获取要在UI中显示的数据。

关于合并问题,有一些最好的方法。永远不要在线程之间传递对象,但如果需要,则将对象In传递给其他线程,并从该线程访问它们,例如,当您通过解析xml保存数据时,您应该将它们保存在当前线程moc上并获取它们的In,然后在UI线程重新获取它们时传递给UI线程。

您还可以注册通知,当一个moc更改时,用户信息字典会通知您,它将有更新的对象,您可以将它们传递给合并上下文方法调用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21159641

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档