只读来自多个线程的sqlite3的访问权限

bus*_*ila 5 sqlite multithreading system.data.sqlite thread-safety

根据http://www.sqlite.org/threadsafe.html,使用sqlite时有三种不同的线程模式:单线程,多线程序列化.当配置为序列化多线程模式时,使用互斥锁(取决于它们使用的模式或多或少),而在单线程模式下,根本不使用互斥锁.

假设数据库仅用于查询(只读访问),是否可以使用单线程模式,同时仍然从不同的线程访问它?还是需要保护全球资源?

另外,可以以相同的方式使用默认的ADO.NET适配器System.Data.Sqlite吗?

CL.*_*CL. 4

SQLite 库有许多内部数据结构,即使对于只读数据库文件(缓存、编译语句、结果集等)也会发生更改,因此您绝不能从多个线程访问单线程连接。

ADO.NET 不提供任何线程安全保证,System.Data.SQLite 也不提供任何线程安全保证。