Core data 用于多线程获取或创建的CoreData模式

Core data 用于多线程获取或创建的CoreData模式,core-data,concurrency,Core Data,Concurrency,我正在寻找一种能够确保线程安全的“获取或创建”的CoreData设计模式。我有一种情况,两个不同的线程可能在同一时间寻找同一条记录。如果未找到该记录,则线程将创建一条记录。不幸的是,两个线程都找不到此记录,因此它们都创建了相同的记录。t Reddy 实现这一点的一种方法是使用一个私有排队的MOC来完成所有的创建——如果您愿意,可以使用一个创建MOC。通过这种方式,您可以从您想要的任何MOC进行提取,如果提取失败,您可以在创建MOC上重新执行提取,如果提取失败,则创建它。这一纪律将迫使你总是有秩序

我正在寻找一种能够确保线程安全的“获取或创建”的CoreData设计模式。我有一种情况,两个不同的线程可能在同一时间寻找同一条记录。如果未找到该记录,则线程将创建一条记录。不幸的是,两个线程都找不到此记录,因此它们都创建了相同的记录。

t Reddy

实现这一点的一种方法是使用一个私有排队的MOC来完成所有的创建——如果您愿意,可以使用一个创建MOC。通过这种方式,您可以从您想要的任何MOC进行提取,如果提取失败,您可以在创建MOC上重新执行提取,如果提取失败,则创建它。这一纪律将迫使你总是有秩序的测试,没有重复的创作。您需要通过子MOC关系或通过“已保存”合并通知来管理跨MOC协调

安德鲁