多线程核心数据:“主”上下文线程

Posted

技术标签:

【中文标题】多线程核心数据:“主”上下文线程【英文标题】:Multi-threaded Core Data: 'Main' context thread 【发布时间】:2012-03-07 00:20:12 【问题描述】:

当应用程序启动时,我初始化了一堆包含与其他实体的多对多关系的上下文对象。例如,

历史 我的足迹

其中 History 和 My Tracks 将包含 o-to-many Track 实体。这些(在我当前的实现中)由主线程上的上下文管理。

当应用程序运行时,Track 实体会在后台创建并移动到 History 和 My Tracks(它们位于不同的托管对象上下文中)。所有后台线程都有自己的托管对象上下文。但是,当我必须保存我的轨迹历史记录时,它需要位于主上下文/主线程上。当主线程被阻止写入时,这会导致显着且不可接受的 UI 延迟。

对解决方法有什么建议吗?

【问题讨论】:

【参考方案1】:

有许多可用的解决方案,我强烈建议您查看过去两年在 iTunes 中的 Apple WWDC 视频。我很好奇“为什么”你需要将我的曲目保存到主线程。真的是“如果我不把它保存在那里,我的主要上下文就不知道它”吗?如果是这样,有一些方法可以使用 saveChange 通知,后台线程可以让主上下文知道特定对象等。

【讨论】:

以上是关于多线程核心数据:“主”上下文线程的主要内容,如果未能解决你的问题,请参考以下文章

Python核心编程——多线程threading和队列

核心数据和多线程在保存时崩溃

带有子上下文的核心数据多线程

核心数据错误与异常第 3 部分

核心数据:获取背景并在主线程上使用 objectWithID,性能优势?

核心数据多线程获取记录