Shy*_*yam 5 multithreading background ios couchbase couchbase-lite
我正在开发一个使用Couchbase同步文档的应用程序.现在我在主线程上创建并使用相同的所有文档.
但是现在我陷入了一个场景,我需要创建并将文档推送到除main之外的其他线程中,而不是阻止UI.
如何在后台线程中运行Couchbase数据库的一部分以仅支持上述方案.
尝试使用Couchbase文档中的方法进行并发支持.但是,每当我在后台线程中创建文档时,都会收到线程安全崩溃事件.
DispatchQueue.global(qos: .background).async {
//creating couchbase documents here
}
Run Code Online (Sandbox Code Playgroud)
低于崩溃:
***由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'*****THREAD-SAFETY VIOLATION:此数据库正在未创建的线程上使用!请参阅Couchbase Lite文档中的并发性指南.*****
请帮忙.
1.x 中的 Couchbase Lite API 不是线程安全的,并且支持线程限制模型。所以你不能跨线程共享对象 - 换句话说,如果你创建了一个CBLDatabase在主线程上创建了一个对象,则无法在后台线程上使用该实例。您必须为后台线程创建一个新实例。\n因此请执行以下操作:
CBLManager实例dispatchQueue属性设置为您创建的队列dispatch_async在队列中的呼叫内进行 Couchbase Lite 呼叫。顺便说一句,Couchbase Mobile 2.0 API 是线程安全的,如果这是一个新建项目,您可能需要考虑这一点。
\n| 归档时间: |
|
| 查看次数: |
330 次 |
| 最近记录: |