不知道大神们线程池是怎么写的 我个人理解原理应该就是这样 用的自带的支持库里的名利演示的 没写 执行语句 直接用 自带的执行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])
.判断结束
.计次循环尾 ()
.判断循环尾 ()
退出许可区 (许可证)
|