【文件属性】:
文件名称:sqlite3.30.1 数据库模块+支持库(彻底解决多线程死锁问题)-易语言
文件大小:2.02MB
文件格式:ZIP
更新时间:2021-06-14 05:33:22
2019开源大赛(第四届)
本次更新对于支持库来说,接口改动不大,模块版的话是尽量和支持库接口保持一致,所以对于以前的模块接口可能改动就大了。
要解决多线程问题,主要是对sqlite3的锁机制进行了解,和事务有密切的关系。本次更新的版本在开始事务时,增加了一个 事务锁状态 的参数。
拿简单的话来描述就是 开始事务 时如果
设置了
事务锁状态_ 立即
参数,那么这个时候其他线程的连接就不能写操作了,但是可以读操作,但是在提交事务时也要等待所有读操作完成了才能提交。
设置了
事务锁状态_ 独占
参数,那么这个时候其他线程的连接读写都不可以了。
在等待的时候就处于繁忙状态,我们可以设置
数据库.繁忙超时
()来设置等待时间。
还有种情况还是会
死锁
,就是记录集没有关闭,而且这次更新的支持库和模块都是必须
手动关闭记录集
的,所以一定注意。
当然多进程和多线程是一个道理,具体操作看例子。
esqlite3 V1.1 相对于1.0的更新
1、增加了全局命令:
S3互斥体进入
S3互斥体退出
S3聚合上下文
S3取数据库自上下文
2、增加了zySqlite数据库 命令
繁忙超时
繁忙处理
取文件名
是否只读
取互斥体
是否自动提交
进度处理
取下一记录集
取总影响行
3、增加了 zySqlite记录集 命令
是否繁忙
是否只读
取数据库句柄
取行数
4、数据库.开始事务() 增加了 事务锁状态 参数,此参数在多线程中非常重要。
5、记录集必须手动关闭,任何内部方法都不再自动关闭。
【文件预览】:
sqlite3.30.1
----sqlite3模块()
--------多线程测试(模块版).e(59KB)
--------zySqlite3.30.1.e(127KB)
--------test.csv(233B)
--------例程(模块版).e(55KB)
--------sqlite3.dll(988KB)
--------zySQLite3.ec(110KB)
----sqlite3支持库()
--------更新说明.txt(455B)
--------例程(支持库版).e(22KB)
--------esqlite31_static.lib(2.29MB)
--------test.csv(233B)
--------多线程测试(支持库版).e(27KB)
--------esqlite31.fne(1.04MB)