|

楼主 |
发表于 2025-3-26 15:05:31
|
显示全部楼层
山东省烟台市
.版本 2
.支持库 e2ee
.支持库 spec
.子程序 列表任务线程1
.参数 句柄, 整数型
.局部变量 i, 整数型
.局部变量 空闲线程, 整数型
.局部变量 单次投递, 整数型
.局部变量 执行线程数, 整数型
.局部变量 目标数, 整数型
.局部变量 剩余数, 整数型
线程池_e2ee.取回任务数据 (句柄, i)
目标数 = 到整数 (列表框_取标题 (i - 1, 3))
' 线程组 [1] = i ' 主线程
' 线程组 [2] = 原子_递增 (线程组 [2]) ' 子线程执行数量
' 线程组 [3] = 原子_递增 (线程组 [3]) ' 运行次数
' 线程组 [4] ' 结束判断
' 线程组 [5] ' 原子_递增 (线程组 [5]) ’成功次数
' 线程组 [6] ' 原子_递增 (线程组 [6]) '失败次数
' 线程组 [7] ' 原子_递增 (线程组 [7]) '运行中线程:信号
列表框_置标题 (i - 1, 9, “进行中”)
.判断循环首 (工作中)
' 空闲线程 = 线程池_鱼刺.取_空闲线程数 () ' ---------这么玩 似乎如果极速模式的话 失去了线程公平性
调试输出 (配置.并发, 线程组 [2])
空闲线程 = 配置.并发 - 线程组 [2]
单次投递 = 空闲线程
.如果真 (空闲线程 ≥ 1)
.如果真 (配置.并发 - 线程组 [2] < 空闲线程)
' 单次投递 = 配置.并发 - 线程组 [2]
.如果真结束
' --------动态缩短并发,避免目标超量问题
.如果真 (配置.是否极速模式 = 假)
剩余数 = 目标数 - 线程组 [5]
.如果真 (剩余数 < 单次投递)
单次投递 = 剩余数
.如果真结束
.如果真结束
线程组 [7] = 单次投递
调试输出 (“[” + 到文本 (i) + “]单次投递:”, 单次投递)
.计次循环首 (单次投递, )
线程池_鱼刺.投递任务 (&任务, i, )
原子_递增 (线程组 [2])
原子_递增 (线程组 [3])
.如果真 (配置.线程派发间隔 > 1)
延迟 (配置.线程派发间隔)
.如果真结束
.计次循环尾 ()
' ----------等待线程信号,为了控制目标数超量问题,这里不太好,因为线程假死怎么办??
.如果真 (配置.是否极速模式 = 假)
.循环判断首 ()
.如果真 (线程组 [7] = 0)
跳出循环 ()
.如果真结束
.循环判断尾 (工作中)
.如果真结束
.如果真结束
.如果真 (线程池_鱼刺.等待任务动态 (, ) = 假) ' 当用户点击停止线程 返回假 超时也是返回假
跳出循环 ()
.如果真结束
.如果真 (线程池_鱼刺.取_状态 () = 3)
跳出循环 ()
.如果真结束
.如果真 (线程组 [4] = 1 或 线程组 [5] = 目标数) ' 目标到了或者程序逻辑停止了
跳出循环 ()
.如果真结束
处理事件 ()
.判断循环尾 ()
调试输出 (“子线程结束”, i)
列表框_置标题 (i - 1, 9, “结束”)
原子_递减 (任务计次)
应该在哪个地方写呀 |
|