SQLite.Net线程安全吗?

rip*_*234 6 .net sqlite system.data.sqlite thread-safety

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

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

ang*_*son 8

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

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

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

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

  • 要向上面添加少量 - ADO.NET规范不建议或要求它们是线程安全的.您应该为每个线程使用一个连接 - 这是ADO.NET的设计. (3认同)