首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何确保只有一个线程在执行后台上下文块

如何确保只有一个线程在执行后台上下文块
EN

Stack Overflow用户
提问于 2019-06-11 02:45:34
回答 1查看 52关注 0票数 2

在我的应用程序中,我有一个后台线程,它确保本地数据库(核心数据)与服务器同步。有多种方式可以触发处理(notificationServer观察者、计时器等)。但是,我希望确保此时只有一个实例在处理数据。因此,如果一个处理任务在“旧的”同步任务运行时被触发,我希望它等待前一个任务完成。

我当前的代码如下所示:

代码语言:javascript
复制
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()
        }
}

是否可以保证,如果我在同一上下文中执行多个任务,它们将不会并行执行?如果没有,同步这些任务的最佳方式是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-06-11 03:04:37

如果您创建了一个DispatchQueue,则它是一个串行队列。当任务正在进行时,无法启动新任务。实际上,串行队列是一个锁。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56531913

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档