是否可以在写入 SQLite 数据库时读取它?
我知道在写入时访问被阻止写入,但读取是否相同?
这有点令人费解,但请查看 SQLite 的文件锁定和并发文档。听起来如果数据库处于exclusive
锁定模式,那是唯一不允许读取的时间。除了解锁之外,当数据库甚至没有打开时。
我不是 100% 确定它,但这就是我认为的意思。
经过一番阅读,并查看了 FMDB 代码,我发现我没有正确使用 SQLITE_BUSY 和 SQLITE_LOCKED 返回值。
根据 FMDB 代码,一个人应该循环进行有限次数的重试,并在中间等待一小段时间。
所以我在我的代码中实现了这一点,一切似乎都运行良好。
是的,尽管需要考虑所有相关的多线程问题。我通常通过 sqlite3_open_v2() 打开同一个数据库文件的多个句柄。