在我的应用程序中,我有一个后台线程,它确保本地数据库(核心数据)与服务器同步。有多种方式可以触发处理(notificationServer观察者、计时器等)。但是,我希望确保此时只有一个实例在处理数据。因此,如果一个处理任务在“旧的”同步任务运行时被触发,我希望它等待前一个任务完成。
我当前的代码如下所示:
backgroundContext = persistance.persistentContainer.newBackgroundContext()
// this is an instance variable which will be shared by all the threads
...
...
@objc func managedObjectContextDidSave(notification: NSNotification) {
backgroundContext.perform {
self.processAllHisotory()
}
}
是否可以保证,如果我在同一上下文中执行多个任务,它们将不会并行执行?如果没有,同步这些任务的最佳方式是什么?
发布于 2019-06-11 03:04:37
如果您创建了一个DispatchQueue,则它是一个串行队列。当任务正在进行时,无法启动新任务。实际上,串行队列是一个锁。
https://stackoverflow.com/questions/56531913
复制相似问题