.版本 2
.支持库 EThread
.支持库 shellEx
.子程序 处理条目
.参数 线程数
.局部变量 i, 整数型
.局部变量 条目
.局部变量 状态, 文本型
.局部变量 运行时间
.局部变量 线程句柄, , , "0"
.局部变量 通讯信号, 线程传参, , "0"
' 调试输出 (线程数)
' 调试输出 (超时时长)
重定义数组 (线程句柄, 真, 总条数)
重定义数组 (通讯信号, 真, 总条数)
.判断循环首 (总计次 < 总条数)
' ——————————————————————
进入许可区 (许可证0)
总计次 = 总计次 + 1
.如果真 (总计次 > 总条数)
退出许可区 (许可证1)
跳出循环 ()
.如果真结束
条目 = 总计次
退出许可区 (许可证0)
' ——————————————————————
' 开始处理第(条目)条并输出结果
进入许可区 (许可证1)
编辑框5.加入文本 (“开始:第” + 到文本 (条目) + “条(由线程” + 到文本 (线程数) + “处理)...” + #换行符)
处理事件 ()
退出许可区 (许可证1)
' ——————————————————————
运行时间 = 取启动时间 ()
通讯信号 [条目].条目 = 条目
启动线程 (&处理条目_子程序, 取指针地址 (通讯信号 [条目]), 线程句柄 [条目])
.判断循环首 (条目 > 0) ' 无限循环,判断
延时 (300)
.如果真 (通讯信号 [条目].信号 = 1)
状态 = “正常结束”
跳出循环 ()
.如果真结束
.如果真 (取启动时间 () - 运行时间 > 超时时长)
强制结束线程 (线程句柄 [条目])
状态 = “超时退出”
跳出循环 ()
.如果真结束
.如果真 (结束信号)
进入许可区 (许可证0)
.如果真 (条目 = 总条数)
总计次 = 总计次 + 1
.如果真结束
逆计次 = 逆计次 - 1
退出许可区 (许可证0)
返回 ()
.如果真结束
.判断循环尾 ()
' ——————————————————————
进入许可区 (许可证1)
编辑框5.加入文本 (“结束:第” + 到文本 (条目) + “条(由线程” + 到文本 (线程数) + “处理),状态为【” + 状态 + “】...” + #换行符)
处理事件 ()
退出许可区 (许可证1)
' 完成处理第(条目)条并输出结果
' ——————————————————————
进入许可区 (许可证0)
.如果真 (条目 = 总条数)
总计次 = 总计次 + 1
.如果真结束
逆计次 = 逆计次 - 1
退出许可区 (许可证0)
.判断循环尾 ()