6

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

我知道 SQLite 本身可以在有或没有线程安全的情况下编译- 但 System.Data.SQLite 是如何编译的?

4

1 回答 1

9

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

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

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

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

于 2009-05-19T22:01:25.443 回答