多线程只读访问sqlite3的问题

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

假设数据库仅用于查询(只读访问),是否可以在仍然从不同线程访问它的情况下使用单线程模式?还是需要保护全局资源?
此外,是否可以以相同的方式使用默认的ADO.NET适配器System.Data.Sqlite

我想扩展这个问题:我想知道多线程和串行之间是否存在性能差异?如果访问是只读的,它们是等效的,对吗? - Fabian
1个回答

4

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接