我正在开发一个应用程序,它使用Couchbase来同步文档。现在,我在主线程上创建的所有文档都在使用。
但是现在我陷入了这样一个场景:我需要在main之外的其他线程中创建和推送文档,而不是阻塞UI。
如何在后台线程中运行Couchbase数据库部分,以只支持上述场景。
尝试了用于并发support.But的Couchbase文档中的方法,当我在后台线程中创建这样的文档时,当我在后台线程中创建文档时,接收线程安全崩溃崩溃通知。
DispatchQueue.global(qos: .background).async {
//creating couchbase documents here
}跌跌撞撞:
*终止应用程序由于非正常异常'NSInternalInconsistencyException',原因:‘*线程-安全冲突:这个数据库是在一个线程上使用的,它不是在上面创建的!请参阅Couchbase Lite文档中的并发指南。*****
请帮帮忙。
发布于 2018-03-20 13:47:28
1.x中的Couchbase Lite API不是线程安全的,它支持线程约束模型。因此,您不能跨线程共享对象-换句话说,如果您在主线程上创建了一个CBLDatabase对象,则不能在后台线程上使用该实例。您必须为后台线程创建一个新实例。以下几点也是如此:
CBLManager实例dispatchQueue属性设置为您创建的队列dispatch_async调用中执行Couchbase调用。顺便说一下,CouchBaseMobile2.0API是线程安全的,如果这是一个绿地项目,您可能需要考虑一些问题。
https://stackoverflow.com/questions/49383568
复制相似问题