SQLite多线程使用
来源:互联网 发布:平板电脑淘宝横屏 编辑:程序博客网 时间:2024/04/30 07:04
SQLite支持3种线程模式:
单线程:这种模式下,没有进行互斥,多线程使用不安全。禁用所有的mutex锁,并发使用时会出错。当SQLite编译时加了SQLITE_THREADSAFE=0参数,或者在初始化SQLite前调用sqlite3_config(SQLITE_CONFIG_SINGLETHREAD)时启用。
多线程:这种模式下,只要一个数据库连接不被多个线程同时使用就是安全的。源码中是启用bCoreMutex,禁用bFullMutex。实际上就是禁用数据库连接和preparedstatement(准备好的语句)上的锁,因此不能在多个线程中并发使用同一个数据库连接或preparedstatement。当SQLite编译时加了SQLITE_THREADSAFE=2参数时默认启用。若SQLITE_THREADSAFE不为0,可以在初始化SQLite前,调用sqlite3_config(SQLITE_CONFIG_MULTITHREAD)启用;或者在创建数据库连接时,设置SQLITE_OPEN_NOMUTEXflag。
串行:sqlite是线程安全的。启用所有的锁,包括bCoreMutex和bFullMutex。因为数据库连接和preparedstatement都已加锁,所以多线程使用这些对象时没法并发,也就变成串行了。当SQLite编译时加了SQLITE_THREADSAFE=1参数时默认启用。若SQLITE_THREADSAFE不为0,可以在初始化SQLite前,调用sqlite3_config(SQLITE_CONFIG_SERIALIZED)启用;或者在创建数据库连接时,设置SQLITE_OPEN_FULLMUTEXflag 。
编译时选择线程模式
启动时选择线程模式
单线程模式,SQLITE_CONFIG_MULTITHREAD指定为多线程模式,SQLITE_CONFIG_SERIALIZED指定为串行模式。
运行时选择线程模式
0 0
- 多线程下使用sqlite
- SQLite多线程使用总结
- SQLite的多线程使用
- SQLite多线程使用总结
- SQLite多线程使用
- SQLite多线程使用总结
- 多线程下使用sqlite
- 深入SQLite多线程的使用总结详解
- SQLite数据库中多线程使用问题
- Android Sqlite的使用(多线程优化)
- SQLite 多线程
- sqlite 多线程
- 在多线程中使用sqlite太恶心了
- Sqlite内存数据库在多线程下的使用问题
- 多线程或多进程使用sqlite的问题.
- Sqlite内存数据库在多线程下的使用问题
- Sqlite的多线程问题
- SQLITE和多线程
- linux中md5sum命令的重要作用------顺便聊聊两次与之相关的经历
- EF----实体框架集合
- java.lang.OutOfMemoryError: PermGen space的解决方案
- Codeforces Round #305 (Div. 1)E. Mike and Friends【后缀数组+线段树】
- 2015百度之星初赛1 1004 kpi题解(set的运用)
- SQLite多线程使用
- android studio 链式编程代码格式化
- Ajax(一)
- 消息队列处理方式
- 第十二周项目四-点丶圆的关系
- 四月逝去,五月再见
- 会员卡管理系统技术解析(十五) 库存卡作废恢复记录查询
- leecode Generate Parentheses
- fatal error LNK1104: cannot open file "Debug/构造函数.exe"