|
|
5精币
初涉多线程,有疑问向大家请教。
我在线程池1中创建了5个线程进行多线程多账号登陆。在判断其执行到第二轮即登陆账号为十的情况下就启动执行线程池2,线程池2同样也是创建5个线程。线程池2的线程是执行了,但问题出现了,因为线程池2的线程读取的是线程池1所写入的全局变量A,导致在线程池2启动后线程池1的线程就在等待,等待线程池2的5个线程执行完毕线程池1的线程才进行第三轮线程的执行,期间程序有似假死状态,请问有什么办法能让线程池2的线程在启动后线程池1的线程不会进行等待状态?注:在登陆开始和结束处加入了进入许可区和退出许可区,也许就是这造成读取共用变量时出现等待吧。
.版本 2
.支持库 iext
.支持库 EThread
.计次循环首 (超级列表框1.取表项数 (), i)
my [i].账号 = 超级列表框1.取标题 (i - 1, 1)
my [i].密码 = 超级列表框1.取标题 (i - 1, 2)
my [i].许可证 = 创建进入许可证 ()
多线程A.投递任务 (&登陆, i)
延时 (500)
.' 如果 (发言)
.' 如果真 (取数组成员数 (A) = 线程数 × 2)
' 启动线程 (&多线程发言, , 线程句柄)
.如果真结束
.否则
进度条1.位置 = 超级列表框1.现行选中项 × 100 ÷ 超级列表框1.取表项数 ()
.如果结束
.如果真 (运行 = 假)
返回 ()
.如果真结束
.计次循环尾 ()
|
回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。 友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。 快捷通道:申请荣誉值 →
|