Core data 在核心数据中并发枚举托管对象是线程安全的吗
我需要更新核心数据中每个排列对象的值,我目前正在使用循环。但是我想知道下面的代码是否是线程安全的,以及为什么 ManagedObjectContext不是线程安全的,解释道 从某种意义上讲是安全的,虽然块的多个副本可以同时运行,但它们都在处理不同的对象。当然,假设对Core data 在核心数据中并发枚举托管对象是线程安全的吗,core-data,thread-safety,enumeration,nsmanagedobjectcontext,nsarraycontroller,Core Data,Thread Safety,Enumeration,Nsmanagedobjectcontext,Nsarraycontroller,我需要更新核心数据中每个排列对象的值,我目前正在使用循环。但是我想知道下面的代码是否是线程安全的,以及为什么 ManagedObjectContext不是线程安全的,解释道 从某种意义上讲是安全的,虽然块的多个副本可以同时运行,但它们都在处理不同的对象。当然,假设对setValue:forKey:的调用对集合中的其他对象没有副作用 如果另一个线程或队列试图访问此集合中的对象,则无法阻止它在同一时间与同一对象发生冲突,这是不安全的。块不会锁定其他位置的其他操作,因此如果您可能同时在其他位置使用这些
setValue:forKey:
的调用对集合中的其他对象没有副作用
如果另一个线程或队列试图访问此集合中的对象,则无法阻止它在同一时间与同一对象发生冲突,这是不安全的。块不会锁定其他位置的其他操作,因此如果您可能同时在其他位置使用这些对象,则需要采取更多预防措施
[myArrayController.arrangedObjects enumerateObjectsWithOptions:NSEnumerationConcurrent
usingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
// do some work
[obj setValue:@"some value" forKey:@"aKey"];
}]