找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 378|回复: 0

易语言小型线程池例子

[复制链接]

300

主题

35

回帖

1582

积分

管理员

积分
1582
发表于 2025-3-28 14:45:41 | 显示全部楼层 |阅读模式




.版本 2
.支持库 spec

.程序集 定时功能集

.子程序 删除巷邻外加盟缴款单_线程
.参数 参_ID, 整数型, , 计数
.参数 参_店号指针, 整数型, , 文本指针
.局部变量 局_SQL, 文本型
.局部变量 局_店号, 文本型

局_店号 = 指针到文本 (参_店号指针)
.如果真 (删首尾空 (局_店号) ≠ “”)
    局_SQL = 取文本 (“delete from HD40.LJ_PAYMENTMADE  where CODE='%s'”, 局_店号)
    FOF执行语句 (局_SQL, #常量_日志_Log, “删除外加盟缴款单:”, , , 真, )
.如果真结束


.子程序 删除巷邻线程池
.局部变量 线程池, 鱼刺类_线程池
.局部变量 局_线程数, 整数型
.局部变量 局_巷邻店号, 文本型
.局部变量 局_店号, 文本型, , "0"
.局部变量 i, 整数型
.局部变量 任务总数, 整数型
.局部变量 局_变量文本, 文本型
.局部变量 投递数, 整数型

' -----------------------------------'自动计算线程数
局_线程数 = 到整数 (读环境变量 (“NUMBER_OF_PROCESSORS”)) × 2  ' 获取CPU核心数量
局_线程数 = 选择 (局_线程数 ≤ 0, 5, 局_线程数)  ' 线程小于0则设置5
' -----------------------------------'添加循环数
局_巷邻店号 = FOF取组织类型店号 (到文本 (#常量_组织类型_巷邻加盟))
文本_分割文本 (局_巷邻店号, #换行符, , 局_店号)
任务总数 = 取数组成员数 (局_店号)
' -----------------------------------
线程池.创建 (局_线程数, , )
.判断循环首 (投递数 < 任务总数)
    .判断循环首 (线程池.取_空闲线程数 () = 0)
        _延时 (100, )
    .判断循环尾 ()
    .计次循环首 (线程池.取_空闲线程数 (), i)
        原子_递增 (投递数)
        局_变量文本 = 局_店号   ' 传文本用的
        线程池.投递任务 (&删除巷邻外加盟缴款单_线程, 投递数, 取变量数据地址 (局_变量文本))
        .如果真 (投递数 = 任务总数)  ' 数量达到时跳出不在投递
            跳出循环 ()
        .如果真结束
        _延时 (20)  ' 必须一定要有延时
    .计次循环尾 ()
.判断循环尾 ()
' -----------------------------------
.循环判断首 ()
    _延时 (100, )
    调试输出 (“正在投递” + 到文本 (投递数) + “ 个任务!” + “空闲:” + 到文本 (线程池.取_空闲线程数 ()) + “ 正在执行:” + 到文本 (线程池.取_执行线程数 ()) + “ 最大线程:” + 到文本 (线程池.取_线程池容量 ()), )
.循环判断尾 (线程池.取_是否空闲 () = 假)  ' 等待所有线程完成才能销毁!
.如果 (线程池.销毁 (, , ))
    输出调试文本 (“所有任务都已执行完毕!,线程池正常销毁!”)
.否则
    输出调试文本 (“所有任务都已执行完毕,线程池销毁失败!”)

.如果结束


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|久要宝盒 ( 皖ICP备18021237号 )

GMT+8, 2025-5-6 00:30 , Processed in 0.074698 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表