我一直在阅读苹果文档,但仍然有一个问题,ai 无法找到答案。我有一个 UIManagedDocument 对象,它有两个嵌套的上下文——一个在主线程上的子上下文和一个在私有线程上的父上下文。接下来,我有一个服务器端。因此,当数据从服务器到达时,我想将其插入到后台线程上的托管文档中。
它是线程安全的吗,创建一个异步队列,在那里创建一个 NSManagedObjectContext 并将其设置为在主线程中创建的父 UIManagedDocument 的子上下文?
dispatch_queue_t fetchQ = dispatch_queue_create("Data fetcher", NULL);
dispatch_async(fetchQ, ^{
//here goes some code for downloading data from the server
NSManagedObjectContext * backgroundContext = [[NSManagedObjectContext alloc] initWithConcurrencyType:NSPrivateQueueConcurrencyType];
[backgroundContext setParentContext:self.eventDatabase.managedObjectContext]; // is this thread safe?
//some code for creating objects in backgroundContext
NSLog(@"inserting data in background thread");
});
dispatch_release(fetchQ);
换句话说 - 分配给在主线程上创建的私有线程父级上创建的上下文是否线程安全?