【发布时间】:2018-02-14 04:07:56
【问题描述】:
我的 sqlite 数据库有一个包装器,它创建对象并处理所有数据库查询。它仅包含 SELECT 查询。它被很好地分解为可重复使用的部分并且运行良好。
最近我添加了一个运行缓慢的查询(多个连接),所以我想在后台队列上运行它。
我创建了一个 FMDatabaseQueue 并将我对 db.executeQuery 的所有调用封装在 queue.inDatabase { db in ... } 中。
但是当 FMDB 检测到我在另一个 inDatabase 呼叫中呼叫 inDatabase 时,它会爆炸:
inDatabase: was called reentrantly on the same queue, which would lead to a deadlock.
处理这个问题的正确方法是什么?看来我需要重构我的代码以确保永远不会有对 db 的嵌套调用,但我不明白为什么,因为 sqlite 在同时读取方面没有问题。
【问题讨论】:
标签: fmdb