精易论坛

标题: MYSQL 简单连接池原理 [打印本页]

作者: YY244801950    时间: 2022-8-28 19:44
标题: MYSQL 简单连接池原理
不知道大神们线程池是怎么写的  我个人理解原理应该就是这样  用的自带的支持库里的名利演示的   没写 执行语句    直接用 自带的执行MYSQ
下面是源码  新建个类模块  粘贴进去就可以了     要手动八 程序集变量  赞贴到对应的地方


.版本 2
.支持库 EThread
.支持库 mysql
.支持库 spec

.程序集 MYSQL连接池
.程序集变量 连接池, 整数型, , "0"
.程序集变量 是否空闲, 逻辑型, , "0"
.程序集变量 许可证, 整数型
.程序集变量 许可证2
.程序集变量 是否结束, 逻辑型
.程序集变量 线程句柄, 整数型
.程序集变量 数量Q, 整数型
.程序集变量 地址Q, 文本型
.程序集变量 用户Q, 文本型
.程序集变量 密码Q, 文本型
.程序集变量 库Q, 文本型
.程序集变量 端口Q, 整数型

.子程序 连接, , 公开, 连接完后 启动一个线程  定期事件()      就是间隔多久空闲的线程 重新连接一下数据库   
.参数 数量, 整数型, , 要创建多少个句柄
.参数 地址, 文本型
.参数 用户, 文本型
.参数 密码, 文本型
.参数 库, 文本型, 可空
.参数 端口, 整数型
.局部变量 i, 整数型

是否结束 = 假

地址Q = 地址
用户Q = 用户
密码Q = 密码
库Q = 库
端口Q = 端口

许可证 = 创建进入许可证 ()
许可证2 = 创建进入许可证 ()
.计次循环首 (数量, i)
    加入成员 (连接池, 连接MySql (地址, 用户, 密码, 库, 端口))
.计次循环尾 ()
重定义数组 (是否空闲, 假, 取数组成员数 (连接池))
.计次循环首 (取数组成员数 (连接池), i)
    是否空闲 [i] = 真
.计次循环尾 ()
' 调试输出 (连接池)




.子程序 取空闲线程, 整数型, 公开, 取出一个空闲线程句柄  并改为非空闲状态   使用后  记得使用置空闲状态
.局部变量 i, 整数型

进入许可区 (许可证2)

.计次循环首 (取数组成员数 (连接池), i)
    .判断开始 (是否空闲 [i] = 真)
        是否空闲 [i] = 假
        ' 调试输出 (i, 连接池 [i])
        返回 (连接池 [i])
    .默认

    .判断结束

.计次循环尾 ()
退出许可区 (许可证2)
返回 (0)



.子程序 置空闲状态, 逻辑型, 公开
.参数 句柄, 整数型
.局部变量 i, 整数型

.计次循环首 (取数组成员数 (连接池), i)
    .判断开始 (句柄 = 连接池 [i])
        是否空闲 [i] = 真
        返回 (真)
    .默认


    .判断结束

.计次循环尾 ()
返回 (假)


.子程序 销毁连接池, 逻辑型, 公开
.局部变量 i, 整数型

是否结束 = 真
.计次循环首 (取数组成员数 (连接池), i)
    调试输出 (连接池 [i])
    断开MySql (连接池 [i])
    连接池 [i] = 0
.计次循环尾 ()
强制结束线程 (线程句柄)
重定义数组 (连接池, 假, 0)
返回 (真)


.子程序 定期事件, , 公开
.参数 间隔, 整数型, , 间隔多少面 重新获取 句柄
.局部变量 i, 整数型

处理事件 ()
进入许可区 (许可证)
.判断循环首 (取反 (是否结束))
    延迟 (间隔 × 1000)
    .如果真 (是否结束 = 真)
        跳出循环 ()
    .如果真结束

    .计次循环首 (取数组成员数 (连接池), i)
        .判断开始 (是否空闲 [i] = 真)  ' 此线程句柄  空闲就 重新连接一下
            是否空闲 [i] = 假
            连接池 [i] = 连接MySql (地址Q, 用户Q, 密码Q, 库Q, 端口Q)
            是否空闲 [i] = 真
            ' 调试输出 (i, 连接池 [i])
        .默认

            .判断循环首 (取反 (是否空闲 [i]) = 真)  ' 如果不空闲就等待到空闲为止
                延迟 (100)
            .判断循环尾 ()
            是否空闲 [i] = 假
            连接池 [i] = 连接MySql (地址Q, 用户Q, 密码Q, 库Q, 端口Q)
            是否空闲 [i] = 真
            ' 调试输出 (i, 连接池 [i])


        .判断结束

    .计次循环尾 ()

.判断循环尾 ()




退出许可区 (许可证)







MYSQL 线程池.e

8.59 KB, 下载次数: 62, 下载积分: 精币 -2 枚

看不懂 文字版的 点这里下载源码


作者: jysoft2022    时间: 2022-8-28 20:32
谢谢分享
作者: winxsj    时间: 2022-8-28 20:52
大佬66666666666
作者: 赚钱赚钱    时间: 2022-8-28 23:20
#在这里快速回复#持开源~!感谢分享
作者: happyweeks365    时间: 2022-8-29 06:58
6666666666666666666
作者: q1512960733    时间: 2022-8-29 07:41
谢谢楼主,学习下!
作者: sostemp    时间: 2022-8-29 09:48
谢谢楼主,学习下!
作者: 龙英俊    时间: 2022-8-29 10:17
6666666666666666
作者: ttggnn    时间: 2022-8-29 14:51
感谢分享
作者: yxl2008    时间: 2022-8-29 15:00
谢谢分享,下载学习!!!!
作者: kyo9766    时间: 2022-8-29 15:07
学习一下连接池,感谢分享
作者: 千面萌萌    时间: 2022-8-29 21:52
bug: 1、方法 取空闲线程  中间直接返回时候需要退出许可区 2、取空闲线程用了许可证,置空闲状态 也应该用许可证 3、销毁连接池的时候,暴力断开mysql可能出导致正在使用的线程冲突 4、你这个强制结束线程,对象是线程不是mysql句柄,但是你代码中只有这里出现过句柄,意义何在?
作者: BIG牛肉面    时间: 2022-8-30 05:25

作者: wjswzj0    时间: 2022-8-30 09:07
感谢分享,很给力!~
作者: cckj    时间: 2022-8-30 09:38
支持开源~!感谢分享
作者: ttggnn    时间: 2022-8-30 12:19
感谢分享
作者: yzl666    时间: 2022-8-30 14:15
感谢分享
作者: 凉城o    时间: 2022-8-31 06:26
666666666666666
作者: fusiyon    时间: 2022-9-2 12:12
开源精神必须支持
作者: 亿万    时间: 2022-9-2 13:36
感谢分享
作者: YY244801950    时间: 2022-9-5 16:27
千面萌萌 发表于 2022-8-29 21:52
bug: 1、方法 取空闲线程  中间直接返回时候需要退出许可区 2、取空闲线程用了许可证,置空闲状态 也应该用 ...

老铁说的对!我只是用半小时临时做的一份列子   很多考虑不周地方!不过 原理是这样的
作者: 1405249742    时间: 2022-9-17 13:00
学习学习
作者: xiaofeiseo    时间: 2022-9-20 21:28

作者: q1599273319    时间: 2022-10-6 04:26
支持开源~!感谢分享
作者: yyf4505    时间: 2023-5-3 21:01
支持开源~!感谢分享
作者: wpzyan123    时间: 2023-5-30 15:17
开源精神必须支持~
作者: 温暖的舌骨    时间: 2023-6-20 13:53





欢迎光临 精易论坛 (https://125.confly.eu.org/) Powered by Discuz! X3.4