|

100精币
这个是模拟双层线程池处理数据的方法,在下面的多线程队列中
第一次点击 按钮 执行时 线程池2获取不到数据:
队列.弹出文本 (局_分配到的任务) #错误地方
----------
第2次之后多次测试中,也有几率在弹出的文本次数跟 orderArr 数组中的次数对不上(orderArr 模拟的10个成员数据,几率弹出文本只有9个)
--------
有好的解决方法吗?
窗口程序集名 | 保 留 | 保 留 | 备 注 | 窗口程序集_启动窗口 | | | | 变量名 | 类 型 | 数组 | 备 注 | 队列 | 鱼刺类_队列 | | 线程池1 | 鱼刺类_线程池 | | 线程池2 | 鱼刺类_线程池 | | 线程 | 鱼刺类_线程操作 | | orderArr | 单号数据类型 | 0 |
UPS数据库连接. 执行SQL (sql_insert, )线程. 创建 (&主线程, , )变量名 | 类 型 | 静态 | 数组 | 备 注 | temp_记录数量 | 整数型 | | | n | 整数型 | | | i | 逻辑型 | | | m | 整数型 | | |
按钮1.禁止 = 真 重定义数组 (orderArr, 假, 10 ) 计次循环首 (取数组成员数 (orderArr ), n ) 置随机数种子 () orderArr [n ].id = n  orderArr [n ].文本1 = 到文本 (取随机数 (10000000, 999999999 ))  orderArr [n ].文本2 = 到文本 (取随机数 (10000000, 999999999 ))  orderArr [n ].时间 = 到文本 (取现行时间 ()) 计次循环尾 ()temp_记录数量 = 取数组成员数 (orderArr ) 线程池1. 创建 (10, , , ) 计次循环首 (temp_记录数量, n ) 线程池1. 投递任务 (&子线程1, n, ) 计次循环尾 () 线程池2. 创建 (1, , , ) 计次循环首 (temp_记录数量, m ) 线程池2. 投递任务 (&子线程2, , ) 计次循环尾 () 判断循环首 (线程池1. 取_是否完全空闲 () = 假) _延时 (300 ) 判断循环尾 () 判断循环首 (线程池2. 取_是否完全空闲 () = 假) _延时 (300 ) 判断循环尾 ()线程池1. 销毁 ()线程池2. 销毁 ()调试输出 (“线程已销毁”)按钮1.禁止 = 假 变量名 | 类 型 | 静态 | 数组 | 备 注 | 局_分配到的任务 | 文本型 | | | 文本 | 文本型 | | |
文本 = 压入JSON (“长文本测试中ABCDZDSSSSSSSSSSSSS长文本测试中ABCDZDSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS...”, orderArr [参数1 ].文本1, orderArr [参数1 ].文本2, orderArr [参数1 ].时间, 到文本 (参数1 )) 队列. 压入文本 (文本 ) 如果真 (队列. 弹出文本 (局_分配到的任务 ) = 假) 返回 () 调试输出 (局_分配到的任务 )|
压入JSON | 文本型 | | |
文本1 | 文本型 | | | | 文本2 | 文本型 | | | | 文本3 | 文本型 | | | | 时间戳 | 文本型 | | | | ID | 文本型 | | | |
json. 置属性 (“['ups_track_info']”, 文本1, )json. 置属性 (“['master_tracking_number']”, 文本2, )json. 置属性 (“['sub_tracking_number']”, 文本3, )json. 置属性 (“['timestamp']”, 时间戳, )json. 置属性 (“['ID']”, ID, )返回 (json. 取数据文本 ())
队列.e
(1.39 MB, 下载次数: 1)
|
最佳答案
查看完整内容
.版本 2
.局部变量 堆句柄, 整数型
.局部变量 内存数据大小, 整数型
内存数据大小 = 20 × 1024 × 1024 ' 20M
堆句柄 = _堆取默认 ()
集_队列.置缓冲区阀值 (内存数据大小)
集_队列.重新初始化 (堆句柄)
他这个队列本来就提供这些功能的。你感觉数据大了就自己提供内存尺寸。程序窗口启动后设置一次就可以了(队列是程序集或全局变量)
...
|