|
楼主 |
发表于 2024-1-23 20:19:45
|
显示全部楼层
山西省太原市
.版本 2
.支持库 EThread
.支持库 iext
.支持库 spec
.程序集 窗口程序集_启动窗口
.程序集变量 临界, 鱼刺类_临界许可
.程序集变量 原子锁, 鱼刺类_原子锁
.程序集变量 线程池, 鱼刺类_线程池Ex
.程序集变量 线程操作, 鱼刺类_线程操作
.程序集变量 停止, 逻辑型
.程序集变量 集_数量, 整数型
.程序集变量 集_线程句柄, 整数型
.子程序 _按钮_导入文本_被单击
启动线程 (&导入数据, , )
.子程序 导入数据
.局部变量 临时文本, 文本型
.局部变量 临时表项, 整数型
.局部变量 i, 整数型
.局部变量 全部分割, 文本型, , "0"
.局部变量 临时文本数组, 文本型, , "0"
超级列表框1.全部删除 ()
i = 0
.计次循环首 (10, i)
临时表项 = 超级列表框1.插入表项 (, 到文本 (超级列表框1.取表项数 () + 1), , , , )
超级列表框1.置标题 (临时表项, 1, 文本_取随机数字 (1, 9))
.计次循环尾 ()
.子程序 __启动窗口_创建完毕
启动线程 (&导入数据, , )
.子程序 _按钮_线程开始_被单击
.如果真 (线程操作.创建 (&多线程操作, , 集_线程句柄, , , , ) = 真)
调试输出 (“主线程已运行”)
返回 ()
.如果真结束
.子程序 输出日志
.参数 信息, 文本型
.局部变量 t, 文本型
t = 时间_格式化 (取现行时间 (), , “hh:mm:ss”, 真, )
调试输出 (t)
编辑框_返回文本视图.加入文本 (t + 信息 + #换行符)
.子程序 _按钮_线程结束_被单击
.局部变量 状态, 逻辑型
停止 = 真
按钮_线程结束.禁止 = 真
.循环判断首 ()
程序_延时 (500)
处理事件 ()
状态 = 线程池.销毁 (0, 3000)
.循环判断尾 (状态 = 假)
.如果真 (状态 = 真)
按钮_线程结束.禁止 = 假
按钮_线程开始.禁止 = 假
.如果真结束
.子程序 多线程操作
.局部变量 任务数, 整数型
.局部变量 线程数, 整数型
.局部变量 投递任务, 整数型
.局部变量 销毁状态, 逻辑型
.局部变量 局_线程句柄, 整数型
集_数量 = 0
任务数 = 0
任务数 = 到整数 (超级列表框1.取表项数 ())
线程数 = 到整数 (编辑框_线程数.内容)
按钮_线程开始.禁止 = 真
线程操作.置CUP亲和性 (集_线程句柄)
.如果真 (线程数 ≤ 0)
信息框 (“线程数量不能为0”, 0, , )
.如果真结束
.如果真 (线程数 > 任务数)
线程数 = 任务数
线程池.等待任务动态 (300)
.如果真结束
.如果真 (线程池.取_状态 () = 0)
.循环判断首 ()
.循环判断尾 (线程池.创建 (线程数, 线程数, ) = 假)
.如果真结束
.判断循环首 (任务数 > 投递任务)
调试输出 (任务数, 投递任务)
.如果真 (线程池.取_空闲线程数 () > 0)
集_数量 = 集_数量 + 1
线程池.投递任务 (&主线程, 集_数量, )
原子_递增 (投递任务)
.如果真结束
线程池.等待任务动态 (100)
' 程序_延时 (300, )
.判断循环尾 ()
.循环判断首 ()
程序_延时 (300, )
_处理事件 ()
.循环判断尾 (线程池.取_是否空闲 () = 假)
.如果真 (线程池.取_是否空闲 () = 真)
按钮_线程开始.禁止 = 假
.如果真结束
线程池.等待任务动态 (300)
程序_延时 (300, )
.循环判断首 ()
销毁状态 = 线程池.销毁 (0, )
程序_延时 (300, )
_处理事件 ()
.循环判断尾 (销毁状态 = 假)
.如果真 (线程池.销毁 (0, ) = 真)
线程操作.关闭句柄 ()
线程操作.强制结束 ()
.如果真结束
线程池.销毁 (0, 300)
.子程序 主线程
.参数 索引, 整数型
.局部变量 内容, 文本型
临界.进入 ()
' 这一块区域为测试代码/////////////////////
超级列表框1.置标题 (索引 - 1, 3, “正在执行”)
临界.退出 ()
程序_延时 (1, 1)
内容 = 超级列表框1.取标题 (索引 - 1, 1)
.如果真 (内容 ≠ “”)
临界.进入 ()
超级列表框1.置标题 (索引 - 1, 2, 到文本 (到整数 (内容) × 2))
临界.退出 ()
.如果真结束
临界.进入 ()
超级列表框1.置标题 (索引 - 1, 3, “执行完毕”)
临界.退出 ()
|
|