首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在后台线程中使用Couchbase

在后台线程中使用Couchbase
EN

Stack Overflow用户
提问于 2018-03-20 11:54:40
回答 1查看 649关注 0票数 5

我正在开发一个应用程序,它使用Couchbase来同步文档。现在,我在主线程上创建的所有文档都在使用。

但是现在我陷入了这样一个场景:我需要在main之外的其他线程中创建和推送文档,而不是阻塞UI。

如何在后台线程中运行Couchbase数据库部分,以只支持上述场景。

尝试了用于并发support.But的Couchbase文档中的方法,当我在后台线程中创建这样的文档时,当我在后台线程中创建文档时,接收线程安全崩溃崩溃通知。

代码语言:javascript
复制
DispatchQueue.global(qos: .background).async {
   //creating couchbase documents here
}

跌跌撞撞:

*终止应用程序由于非正常异常'NSInternalInconsistencyException',原因:‘*线程-安全冲突:这个数据库是在一个线程上使用的,它不是在上面创建的!请参阅Couchbase Lite文档中的并发指南。*****

请帮帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-20 13:47:28

1.x中的Couchbase Lite API不是线程安全的,它支持线程约束模型。因此,您不能跨线程共享对象-换句话说,如果您在主线程上创建了一个CBLDatabase对象,则不能在后台线程上使用该实例。您必须为后台线程创建一个新实例。以下几点也是如此:

  • 创建一个新的串行调度队列
  • 创建一个CBLManager实例
  • 将管理器的dispatchQueue属性设置为您创建的队列
  • 在队列中的dispatch_async调用中执行Couchbase调用。

顺便说一下,CouchBaseMobile2.0API是线程安全的,如果这是一个绿地项目,您可能需要考虑一些问题。

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

https://stackoverflow.com/questions/49383568

复制
相关文章

相似问题

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