c# - Sqlite 中的多线程

标签 c# multithreading sqlite

根据 Sqlite documentation,我正在使用 System.data.sqlite 连接到 Sqlite 数据库,用户可以通过使用 SQLITE_OPEN_NOMUTEX 标志作为连接字符串的一部分来启用多线程。但是我在接受标志的连接字符串中找不到任何键。它是默认启用的吗?如果不是,我该怎么做?

最佳答案

线程模式由编译时、启动或运行时选项决定。此处有更多详细信息:

http://www.sqlite.org/threadsafe.html

文档说序列化是默认值,这意味着您可以从多个线程使用它 - 它会保护您。如果你想要更多的并行性,你可以使用多线程模式。

如果您在多线程模式下使用它,请确保对给定连接的调用是同步的。如果您想要并行工作,请使用多个连接并保护连接。

API 本身通过将 db 对象(连接)作为您顺序调用的许多函数的参数来暗示这一点。例如,查看您调用时出现错误的这些函数:

int sqlite3_errcode(sqlite3 *db); 
const char *sqlite3_errmsg(sqlite3*);

关于c# - Sqlite 中的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7801361/

相关文章:

.net - 线程优先级有没有作用?

c# - 制作索引控件数组?

c# - 禁用 Windows 中除程序 c# 之外的所有内容

c# - C#中volatile(Thread.VolatileRead/Thread.VolatileWrite)的使用

mysql - 以下 sql 命令出错,即错误 1005 : Can't create table (errno: 150)

Android数据库更新记录

c++ - QT Sqlite 无法获取行。数据库锁定

c# - 在 Telerik RadGrid 层次结构中隐藏列

c# - 我可以轻松地将 Windows 应用商店桌面应用程序转换为通用应用程序或手机应用程序吗?

multithreading - 如何将 Condvar 与 RwLock 一起使用?