SQLite.Net线程安全吗?

时间:2009-05-19 21:03:58

标签: .net sqlite thread-safety system.data.sqlite

我在询问.Net实现 - System.Data.SQLite。 是否有以线程安全方式使用它的指南?

我知道SQLite本身可以编译with or without thread safety - 但System.Data.SQLite是如何编译的?

1 个答案:

答案 0 :(得分:8)

它不是线程安全的,因此您无法跨线程共享连接对象或类似对象。

自述文件中提到的线程错误修正与多个线程有关,这些线程使用多个连接(即每个连接一个)到同一个文件,以及可能产生什么样的问题或竞争条件。

例如,为BEGIN和BEGIN IMMEDIATE提到的线程竞争条件有一个不幸的结果,即使一个线程发出了一个BEGIN,之后发出BEGIN的另一个线程仍然可能在第一个之前拥有数据库。这些类型的情况已得到修复。

但.NET中的数据库连接(oracle,sqlite,ms sql server)不是线程安全的,也不是周围的对象。