SQLite 多线程
来源:互联网 发布:淘宝改打折影响权重吗 编辑:程序博客网 时间:2024/05/17 21:49
http://blog.sina.com.cn/s/blog_a459dcf50101496d.html
SQLite支持3种线程模式:
单线程:这种模式下,没有进行互斥,多线程使用不安全。禁用所有的mutex锁,并发使用时会出错。当SQLite编译时加了SQLITE_THREADSAFE=0参数,或者在初始化SQLite前调用sqlite3_config(SQLITE_CONFIG_SINGLETHREAD)时启用。
多线程:这种模式下,只要一个数据库连接不被多个线程同时使用就是安全的。源码中是启用bCoreMutex,禁用bFullMutex。实际上就是禁用数据库连接和prepared statement(准备好的语句)上的锁,因此不能在多个线程中并发使用同一个数据库连接或prepared statement。当SQLite编译时加了SQLITE_THREADSAFE=2参数时默认启用。若SQLITE_THREADSAFE不为0,可以在初始化SQLite前,调用sqlite3_config(SQLITE_CONFIG_MULTITHREAD)启用;或者在创建数据库连接时,设置SQLITE_OPEN_NOMUTEX flag。
串行:sqlite是线程安全的。启用所有的锁,包括bCoreMutex和bFullMutex 。因为数据库连接和prepared statement都已加锁,所以多线程使用这些对象时没法并发,也就变成串行了。当SQLite编译时加了SQLITE_THREADSAFE =1参数时默认启用。若SQLITE_THREADSAFE不为0,可以在初始化SQLite前,调用sqlite3_config(SQLITE_CONFIG_SERIALIZED)启用;或者在创建数据库连接时,设置SQLITE_OPEN_FULLMUTEX flag 。
编译时选择线程模式
启动时选择线程模式
单线程模式,SQLITE_CONFIG_MULTITHREAD指定为多线程模式,SQLITE_CONFIG_SERIALIZED指定为串行模式。
运行时选择线程模式
0 0
- SQLite 多线程
- sqlite 多线程
- Sqlite的多线程问题
- SQLITE和多线程
- 关于sqlite多线程
- python sqlite多线程编程
- SQLite 多线程串行写入
- SQLite多线程读写
- SQLite多线程读写
- 多线程下使用sqlite
- SQLITE和多线程
- SQlite多线程读写
- SQLITE和多线程
- SQLite多线程使用总结
- SQLite的多线程使用
- SQLite多线程读写实践
- SQLite多线程使用总结
- android sqlite多线程读写
- python 配置第三方库(rsa,openssl)
- Hog源码注释(hog.cpp的注解)
- 不裸女被强奸后遭巨石砸死明觉厉李金铭不明觉厉裸女被强奸后遭巨石砸死李金铭
- hdu 1394 Minimum Inversion Number 线段树
- FQDn设置
- SQLite 多线程
- 权限系统管理架构
- 女人的美,男人的功
- OpenStack Keystone的基本概念理解
- selenium WebDriver 显示当前页面的title
- [UVA 10054] The Necklace (图的连通性 + 欧拉回路)
- 岁月本是慈悲的
- 《找你妹》被控告!来看手游发行商掳掠之道与研发商的防狼秘笈
- 更新(2014-2-13)cocos2dx 3.0 beta2 JSB 绑定