Multithreading 尽管doc说它不';T

Multithreading 尽管doc说它不';T,multithreading,sqlite,Multithreading,Sqlite,sqlite3_step()经常返回SQLITE_LOCKED,尽管文档说: WAL提供了更多的并发性,因为读者不会阻止编写器和 writer不会阻止读卡器。阅读和写作可以继续 同时 我有两个线程,每个线程有一个连接。WAL处于启用状态,共享缓存处于启用状态。选择多线程模式(打开时传递SQLITE\u OPEN\u NOMUTEX)。发生此问题时,锁定的线程仅在读取(其他线程正在写入)。 我错过什么了吗 谢谢大家! 事实证明我的理解是正确的,但锁定问题来自共享缓存,我需要关闭它。这样就不会出现S

sqlite3_step()经常返回SQLITE_LOCKED,尽管文档说:

WAL提供了更多的并发性,因为读者不会阻止编写器和 writer不会阻止读卡器。阅读和写作可以继续 同时

我有两个线程,每个线程有一个连接。WAL处于启用状态,共享缓存处于启用状态。选择多线程模式(打开时传递SQLITE\u OPEN\u NOMUTEX)。发生此问题时,锁定的线程仅在读取(其他线程正在写入)。 我错过什么了吗


谢谢大家!

事实证明我的理解是正确的,但锁定问题来自共享缓存,我需要关闭它。这样就不会出现SQLITE_锁定错误。有时在写入时仍然存在SqtLeLy繁忙错误,在这种情况下,我需要重试,或者在事务的中间,回滚和重试事务。


希望这对别人有帮助

你看到faq了吗(关于线程的问题5和问题6?是的,但这意味着打开WAL时,任意数量的读和写可以同时进行而不会阻塞。我没有看到在不同线程上说“读和写可以同时进行”的任何内容。它们只提到单独线程上的检查点