:2.004MB : :1 :2019-12-03 19:21:52
要解决多线程问题,主要是对sqlite3的锁机制进行了解,和事务有密切的关系。本次更新的版本在开始事务时,增加了一个 事务锁状态 的参数。
拿简单的话来描述就是 开始事务 时如果
设置了 事务锁状态_ 立即 参数,那么这个时候其他线程的连接就不能写操作了,但是可以读操作,但是在提交事务时也要等待所有读操作完成了才能提交。
设置了 事务锁状态_ 独占 参数,那么这个时候其他线程的连接读写都不可以了。
在等待的时候就处于繁忙状态,我们可以设置 数据库.繁忙超时()来设置等待时间。
还有种情况还是会死锁,就是记录集没有关闭,而且这次更新的支持库和模块都是必须手动关闭记录集的,所以一定注意。
当然多进程和多线程是一个道理,具体操作看例子。
esqlite3 V1.1 相对于1.0的更新
1、增加了全局命令:
S3互斥体进入
S3互斥体退出
S3聚合上下文
S3取数据库自上下文
2、增加了zySqlite数据库 命令
繁忙超时
繁忙处理
取文件名
是否只读
取互斥体
是否自动提交
进度处理
取下一记录集
取总影响行
3、增加了 zySqlite记录集 命令
是否繁忙
是否只读
取数据库句柄
取行数
4、数据库.开始事务() 增加了 事务锁状态 参数,此参数在多线程中非常重要。
5、记录集必须手动关闭,任何内部方法都不再自动关闭。
02-17会员管理插件源码
02-16鹦鹉记账软件,SQLite数据库版
02-16动态创建菜单与响应事件源码,菜单编辑器
02-09画板快捷启动3.2源码修改版
02-09王者荣耀战力小程序源码分享
02-09简单的指定颜色抠图源码
09-07C++的string的实现源码分析
10-15易语言word循环插入文字 图片工具源码