我不能用多线程访问数据库。其异常数据库已锁定或数据库正忙。我不明白为什么当我读写不同的表时数据库会被锁住。我尝试使用下面的代码来实现多线程
SQLite3.Config(SQLite3.ConfigOption.MultiThread);这不管用。有人知道吗?我太需要它了!
发布于 2015-08-20 23:32:30
如果你有一个多线程的应用程序,那么两个线程都可以自由地更新数据库。但是在DB内部,第一次更新将锁定您试图更新的行,如果第二次更新也试图处理锁定的行,那么您有可能获得“锁定”或“繁忙”,如果第一次更新请求花费的时间超过x,其中"x“是可配置的。
发布于 2015-08-20 23:34:25
SQLite支持无限数量的并发读取器,但它在任何时刻都只允许一个写入器。在许多情况下,这不是问题。编写器排队。每个应用程序都会快速完成其数据库工作并继续运行,并且锁的持续时间不会超过几十毫秒。但有些应用程序需要更多的并发性,这些应用程序可能需要寻求不同的解决方案。
因此,您可以使用来自不同线程的SQL进行读取,但不能用于并发写入。在stackoverflow中有很多关于这个问题的答案。请参阅示例:How to use SQLite in a multi-threaded application?
https://stackoverflow.com/questions/32122229
复制相似问题