|
发表于 2013-7-12 20:25:13
|
显示全部楼层
广东省广州市
.版本 2
.支持库 EThread
.支持库 spec
.程序集 线程程序集
.程序集变量 线程容量, 整数型
.程序集变量 线程句柄, 整数型, , "0"
.程序集变量 总数, 整数型
.程序集变量 停止, 逻辑型
.程序集变量 运行, 逻辑型
.程序集变量 临时数据1, 文本型, , "0"
.程序集变量 临时数据2, 文本型, , "0"
.程序集变量 临时数据3, 文本型, , "0"
.程序集变量 临时数据4, 文本型, , "0"
.程序集变量 程序指针, 子程序指针
.子程序 _启动子程序, 整数型, , 请在本子程序中放置易模块初始化代码
_临时子程序 () ' 在初始化代码执行完毕后调用测试代码
返回 (0) ' 可以根据您的需要返回任意数值
.子程序 _临时子程序
' 本名称子程序用作测试程序用,仅在开发及调试环境中有效,编译发布程序前将被系统自动清空,请将所有用作测试的临时代码放在本子程序中。 ***注意不要修改本子程序的名称、参数及返回值类型。
.子程序 启动多线程, , 公开
.参数 子程序指针, 子程序指针, , 回调子程序(最大4个参数,不能采用多线程,参数与数据1,2,3,4相对应的非数组)
.参数 线程数, 整数型, , 大约值,默认10
.参数 数据1, 文本型, 数组, 如:帐号,密码,代理,其它(数组成员数必须相同)
.参数 数据2, 文本型, 可空 数组, 如:帐号,密码,代理,其它(数组成员数必须相同)
.参数 数据3, 文本型, 可空 数组, 如:帐号,密码,代理,其它(数组成员数必须相同)
.参数 数据4, 文本型, 可空 数组, 如:帐号,密码,代理,其它(数组成员数必须相同)
.局部变量 计次, 整数型
.局部变量 线程号, 整数型
.判断开始 (运行 = 真)
返回 ()
.默认
.判断结束
运行 = 真
停止 = 假
.判断开始 (取数组成员数 (数据2) ≠ 0)
.判断开始 (取数组成员数 (数据1) ≠ 取数组成员数 (数据2))
返回 ()
.判断 (取数组成员数 (数据3) ≠ 0)
.判断开始 (取数组成员数 (数据1) ≠ 取数组成员数 (数据3))
返回 ()
.判断 (取数组成员数 (数据4) ≠ 0)
.判断开始 (取数组成员数 (数据1) ≠ 取数组成员数 (数据4))
返回 ()
.默认
.判断结束
.默认
.判断结束
.默认
.判断结束
.默认
.判断结束
程序指针 = 子程序指针
复制数组 (临时数据1, 数据1)
复制数组 (临时数据2, 数据2)
复制数组 (临时数据3, 数据3)
复制数组 (临时数据4, 数据4)
总数 = 取数组成员数 (临时数据1)
.如果真 (总数 = 0)
返回 ()
.如果真结束
.判断开始 (线程数 ≤ 0)
线程数 = 10
.默认
.判断结束
.判断开始 (线程数 ≥ 总数)
线程数 = 总数
线程容量 = 1
.默认
线程容量 = 取整 (总数 ÷ 线程数)
线程数 = 取整 (总数 ÷ 线程容量)
.判断开始 (总数 % 线程容量 > 0)
线程数 = 线程数 + 1
.默认
.判断结束
.判断结束
.计次循环首 (线程数, 计次)
启动线程 (&执行多线程, 计次, 线程号)
加入成员 (线程句柄, 线程号)
延时 (1)
.计次循环尾 ()
启动线程 (&判断全部线程结束, 线程数, )
.子程序 判断全部线程结束
.参数 线程数, 整数型
.局部变量 计次, 整数型
.局部变量 临时, 整数型, , "0"
.循环判断首 ()
.计次循环首 (线程数, 计次)
.判断开始 (线程句柄 [计次] = 0)
加入成员 (临时, 0)
.判断开始 (取数组成员数 (临时) = 线程数)
' 全部线程结束
清除数组 (线程句柄)
运行 = 假
停止 = 假
返回 ()
.默认
.判断结束
.默认
.判断结束
.计次循环尾 ()
.判断开始 (停止 = 真)
返回 ()
.默认
.判断结束
清除数组 (临时)
延时 (200)
.循环判断尾 (真)
.子程序 执行多线程
.参数 线程, 整数型
.局部变量 计次, 整数型
.局部变量 线程开始位置, 整数型
.局部变量 循环次数, 整数型
.局部变量 临时, 文本型, , "0"
.局部变量 当前数据1, 文本型
.局部变量 当前数据2, 文本型
.局部变量 当前数据3, 文本型
.局部变量 当前数据4, 文本型
.局部变量 线程成员数, 整数型
线程成员数 = 总数
线程开始位置 = (线程 - 1) × 线程容量
循环次数 = 线程容量
.判断开始 (取整 (线程成员数 ÷ 线程容量) = 0)
线程开始位置 = 0
循环次数 = 线程成员数
.默认
.如果 (取整 (线程成员数 ÷ 线程容量) > 0 且 线程 × 线程容量 > 线程成员数)
循环次数 = 线程成员数 - (线程 - 1) × 线程容量
.否则
.如果结束
.判断结束
.计次循环首 (循环次数, 计次)
.判断开始 (停止 = 真)
线程句柄 [线程] = 0
返回 ()
.默认
.判断结束
当前数据1 = 临时数据1 [线程开始位置 + 计次]
.判断开始 (取数组成员数 (临时数据2) ≠ 0)
当前数据2 = 临时数据2 [线程开始位置 + 计次]
.判断开始 (取数组成员数 (临时数据3) ≠ 0)
当前数据3 = 临时数据3 [线程开始位置 + 计次]
.判断开始 (取数组成员数 (临时数据4) ≠ 0)
当前数据4 = 临时数据4 [线程开始位置 + 计次]
.默认
.判断结束
.默认
.判断结束
.默认
.判断结束
调用子程序 (程序指针, , , 当前数据1, 当前数据2, 当前数据3, 当前数据4)
.计次循环尾 ()
线程句柄 [线程] = 0
.子程序 中止多线程, , 公开
停止 = 真
|
|