我在询问.Net实现 - System.Data.SQLite。 是否有以线程安全方式使用它的指南?
我知道SQLite本身可以编译with or without thread safety - 但System.Data.SQLite是如何编译的?
答案 0 :(得分:8)
它不是线程安全的,因此您无法跨线程共享连接对象或类似对象。
自述文件中提到的线程错误修正与多个线程有关,这些线程使用多个连接(即每个连接一个)到同一个文件,以及可能产生什么样的问题或竞争条件。
例如,为BEGIN和BEGIN IMMEDIATE提到的线程竞争条件有一个不幸的结果,即使一个线程发出了一个BEGIN,之后发出BEGIN的另一个线程仍然可能在第一个之前拥有数据库。这些类型的情况已得到修复。
但.NET中的数据库连接(oracle,sqlite,ms sql server)不是线程安全的,也不是周围的对象。