对同一 NSManagedObjectContext 对象的多个并发 perform() 调用
Multiple concurrent perform() calls on same NSManagedObjectContext object
当对同一个NSManagedObjectContext
对象调用多个perform()
调用时,它们会按照调用的顺序一个一个执行吗?我认为这是真的,因为 the document 说
Core Data uses thread (or serialized queue) confinement to protect
managed objects and managed object contexts (see Core Data Programming
Guide).
这表明托管对象上下文及其线程具有 1:1 映射并且所有 perform()
调用都是串行的。但令我害怕的是,我找不到任何关于此的明确讨论,甚至在 Apple 的文档中也没有。
在我的应用程序中,我使用 NSPersistentContainer
设置了一个 CoreData 堆栈,并创建了一个专用的后台上下文来修改托管对象。调用 perform()
调用时,可能会发生前一个 perform()
调用尚未完成的情况。因此,在这种情况下,将它们一一执行至关重要。所以我想确认一下我上面的理解。
注意:我理解perform()
是异步的,但这是从调用者的角度来看的。我问的是从被叫方的角度。
是的,多个执行调用将按相同的顺序排队和执行。
当对同一个NSManagedObjectContext
对象调用多个perform()
调用时,它们会按照调用的顺序一个一个执行吗?我认为这是真的,因为 the document 说
Core Data uses thread (or serialized queue) confinement to protect managed objects and managed object contexts (see Core Data Programming Guide).
这表明托管对象上下文及其线程具有 1:1 映射并且所有 perform()
调用都是串行的。但令我害怕的是,我找不到任何关于此的明确讨论,甚至在 Apple 的文档中也没有。
在我的应用程序中,我使用 NSPersistentContainer
设置了一个 CoreData 堆栈,并创建了一个专用的后台上下文来修改托管对象。调用 perform()
调用时,可能会发生前一个 perform()
调用尚未完成的情况。因此,在这种情况下,将它们一一执行至关重要。所以我想确认一下我上面的理解。
注意:我理解perform()
是异步的,但这是从调用者的角度来看的。我问的是从被叫方的角度。
是的,多个执行调用将按相同的顺序排队和执行。