В моем приложении есть фоновый поток, который обеспечивает синхронизацию локальной базы данных (основных данных) с сервером.Существует несколько способов запуска обработки (наблюдатель уведомлений, таймер, ...).Однако я хочу убедиться, что только один экземпляр обрабатывает данные одновременно.Итак, если задача обработки запускается во время работы «старой» задачи синхронизации, я хочу, чтобы она дождалась завершения предыдущей задачи.
Мой текущий код выглядит примерно так:
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()
}
}
Гарантируется ли, что если я выполню несколько задач в одном и том же контексте, они не будут выполняться параллельно?Если нет, то как лучше синхронизировать такие задачи?