• 爱站资源网:专注活动 / 软件 / 教程分享资源站最稳定的资源站
当前位置:网站首页 > 易语言源码 > sqlite3.30.1 数据库模块+支持库(彻底解决多线程死锁问题)

sqlite3.30.1 数据库模块+支持库(彻底解决多线程死锁问题)

投稿作者:千战 围观人数:539 所属栏目:易语言源码

本次更新对于支持库来说,接口改动不大,模块版的话是尽量和支持库接口保持一致,所以对于以前的模块接口可能改动就大了。

要解决多线程问题,主要是对sqlite3的锁机制进行了解,和事务有密切的关系。本次更新的版本在开始事务时,增加了一个 事务锁状态 的参数。

拿简单的话来描述就是 开始事务 时如果

设置了 事务锁状态_ 立即 参数,那么这个时候其他线程的连接就不能写操作了,但是可以读操作,但是在提交事务时也要等待所有读操作完成了才能提交。

设置了 事务锁状态_ 独占 参数,那么这个时候其他线程的连接读写都不可以了。

在等待的时候就处于繁忙状态,我们可以设置 数据库.繁忙超时()来设置等待时间。

还有种情况还是会死锁,就是记录集没有关闭,而且这次更新的支持库和模块都是必须手动关闭记录集的,所以一定注意。

当然多进程和多线程是一个道理,具体操作看例子。

esqlite3 V1.1 相对于1.0的更新

1、增加了全局命令:

S3互斥体进入

S3互斥体退出

S3聚合上下文

S3取数据库自上下文

2、增加了zySqlite数据库 命令

繁忙超时

繁忙处理

取文件名

是否只读

取互斥体

是否自动提交

进度处理

取下一记录集

取总影响行

3、增加了 zySqlite记录集 命令

是否繁忙

是否只读

取数据库句柄

取行数

4、数据库.开始事务() 增加了 事务锁状态 参数,此参数在多线程中非常重要。

5、记录集必须手动关闭,任何内部方法都不再自动关闭。

sqlite3.30.1 数据库模块+支持库(彻底解决多线程死锁问题)

引用模块


源码文件名模块文件名
例程(模块版).e
sqlite3.ec
多线程测试(模块版).e
sqlite3.ec


引用支持库


源码文件名支持库文件名支持库标识
例程(支持库版).e系统核心支持库 5.0d09f2340818511d396f6aaf844c7e325
高级表格支持库 2.60B4337DA651B4b619ACF61334A7E8B47
扩展界面支持库二 2.0AF6AD80AA4244A59AFB3D83ECF5173CC
扩展界面支持库一 2.027bb20fdd3e145e4bee3db39ddd6e64c
zySqlite3加密支持库 1.1E3ED75AB9F47436EAD9407F4ACB63F14
多线程测试(支持库版).e系统核心支持库 5.0d09f2340818511d396f6aaf844c7e325
多线程支持库 2.05F99C1642A2F4e03850721B4F5D7C3F8
扩展界面支持库一 2.027bb20fdd3e145e4bee3db39ddd6e64c
zySqlite3加密支持库 1.1E3ED75AB9F47436EAD9407F4ACB63F14
zySqlite3.30.1.e系统核心支持库 5.0d09f2340818511d396f6aaf844c7e325
例程(模块版).e系统核心支持库 5.0d09f2340818511d396f6aaf844c7e325
高级表格支持库 2.60B4337DA651B4b619ACF61334A7E8B47
扩展界面支持库二 2.0AF6AD80AA4244A59AFB3D83ECF5173CC
扩展界面支持库一 2.027bb20fdd3e145e4bee3db39ddd6e64c
多线程测试(模块版).e系统核心支持库 5.0d09f2340818511d396f6aaf844c7e325
多线程支持库 2.05F99C1642A2F4e03850721B4F5D7C3F8
扩展界面支持库一 2.027bb20fdd3e145e4bee3db39ddd6e64c


the end
免责声明:本文发布在易语言源码频道,为本站整理编辑,但不代表本站的观点和立场。