根据http://www.sqlite.org/threadsafe.html,使用sqlite时有三种不同的线程模式:单线程,多线程和序列化。当配置为序列化和多线程模式时,使用互斥锁(取决于它们使用的模式或多或少)和单线程模式互斥锁根本不使用。
假设数据库仅用于查询(只读访问),是否可以使用单线程模式,同时仍然可以从不同的线程访问它?还是需要保护全球资源?
此外,可以以相同的方式使用默认的ADO.NET适配器System.Data.Sqlite吗?
答案 0 :(得分:3)
SQLite库有许多内部数据结构,即使对于只读数据库文件(缓存,编译语句,结果集等)也会发生更改,因此您必须从不访问单个数据库 - 来自多个线程的线程连接。
ADO.NET不提供任何线程安全保证,因此neither does System.Data.SQLite。