Tag: 并发

核心数据:儿童上下文是否获得新插入对象的永久对象ID?

我有一个应用程序与两个pipe理对象上下文设置像这样: 父上下文:链接到持久性存储的NSPrivateQueueConcurrencyType。 主要上下文:NSMainQueueConcurrencyType,父上下文的子项。 当插入一个新的托pipe对象到主要的上下文,我保存主要的上下文,然后像这样的父上下文: [context performBlockAndWait:^{ NSError * error = nil; if (![context save: &error]) { NSLog(@"Core Data save error %@, %@", error, [error userInfo]); } }]; [parentContext performBlock:^{ NSError *error = nil; BOOL result = [parentContext save: &error]; if ( ! result ) { NSLog( @"Core Data save error in parent context %@, %@", […]

GCD中的并发与串行队列

我正在努力完全理解GCD中的并发和串行队列。 我有一些问题,希望有人能够清楚地回答我的问题。 我正在读取串行队列被创build和使用,以便一个接一个地执行任务。 但是,如果发生以下情况: 我创build一个串行队列 我使用dispatch_async (在我刚创build的串行队列上)三次分派三个块A,B,C 这三个块是否会被执行: 按顺序A,B,C,因为队列是串行的 要么 同时(在parralel线程同时),因为我使用ASYNC调度 我读到我可以在并发队列上使用dispatch_sync来一个接一个地执行块。 在这种情况下,为什么串行队列甚至存在,因为我总是可以使用一个并发队列,在那里我可以同步调度尽可能多的块? 感谢您的任何好解释!