sqlite3_step()经常返回SQLITE_LOCKED,尽管doc说:
WAL提供更多的并发性,因为读者不会阻止编写者和a 作家不会阻止读者。阅读和写作可以继续 同时进行。
我有两个线程,每个线程都有一个连接。 WAL已打开,共享缓存已打开。选择多线程模式(打开时传递SQLITE_OPEN_NOMUTEX)。发生此问题时,锁定的线程只读取(其他线程正在写入)。 我错过了什么吗?
谢谢!
答案 0 :(得分:0)
原来我的理解是正确的,但锁定问题来自共享缓存,我需要关闭它。这样就没有SQLITE_LOCKED错误。写入时有时仍会出现SQLITE_BUSY错误,在这种情况下我需要重试,或者在处于事务中间的情况下,回滚并重试事务。
希望这有助于某人!