52ky 发表于 2023-8-20 14:43:56

sqlite3.30.1 数据库模块+支持库 易语言源码

要解决多线程问题,主要是对sqlite3的机制进行了解,和事务有密切的关系。本次更新的版本在开始事务时,增加了一个 事务锁状态 的参数。
拿简单的话来描述就是 开始事务 时如果
设置了 事务锁状态_ 立即 参数,那么这个时候其他线程的连接就不能写操作了,但是可以读操作,但是在提交事务时也要等待所有读操作完成了才能提交。
设置了 事务锁状态_ 独占 参数,那么这个时候其他线程的连接读写都不可以了。
在等待的时候就处于繁忙状态,我们可以设置 数据库.繁忙超时()来设置等待时间。
还有种情况还是会死锁,就是记录集没有关闭,而且这次更新的支持库和模块都是必须手动关闭记录集的,所以一定注意。
当然多进程和多线程是一个道理,具体操作看例子。



页: [1]
查看完整版本: sqlite3.30.1 数据库模块+支持库 易语言源码