TC官方合作论坛

标题: 遍历登录临界区问题,未什么只执行了一次,后面的线程哪里... [打印本页]

作者: qq2290081353    时间: 2016-8-17 01:48
标题: 遍历登录临界区问题,未什么只执行了一次,后面的线程哪里...
    多开数量 = 5
临界许可 = 临界区创建()
    遍历(变量 i = 0; i < 多开数量; i++)
        线程句柄[序号] = 线程开启("登录开始",i)
        等待(800)
    结束

  功能 登录开始(序号)
临界区进入(登陆许可)
打开游戏()
输入账号密码()
选择服务器进入游戏()
临界区离开(登陆许可)
结束

未什么TC4.0以前这么写就可以, TC6.0只登录一次没节目了?后边的线程哪里去了求指点


作者: 言术    时间: 2016-8-17 06:03
线程句柄[序号]    这个序号定义在哪?为什么不用 i 呢?
作者: liuhaiyan008    时间: 2016-8-17 07:43
你好像在这下面少了:线程等待(线程句柄[序号] ,NNNNN)
线程句柄[序号] = 线程开启("登录开始",i)
另外你上面明明是“临界许可 = 临界区创建()”  下面为啥是“临界区进入(登陆许可)”?

我也不太懂随便说说,错了千万包涵......
作者: qq2290081353    时间: 2016-8-17 11:03
liuhaiyan008 发表于 2016-8-17 07:43
你好像在这下面少了:线程等待(线程句柄[序号] ,NNNNN)
线程句柄[序号] = 线程开启("登录开始",i)
另外 ...

临界区不就是让线程排队等待吗
作者: qq2290081353    时间: 2016-8-17 11:05
言术 发表于 2016-8-17 06:03
线程句柄[序号]    这个序号定义在哪?为什么不用 i 呢?

感谢,复制的时候马虎了,不过还是没能解决, 不要临界区瞬间5个线程开启了,加了临界区只开启一个后边就没反应了
作者: 言术    时间: 2016-8-17 12:38
如果你先创建临界区,这时线程只能一个个创建,必须等前一个线程结束才能运行下一个,也就是你所说的问题。解决办法是先把线程全部创建完,再创建临界区。
比如:
变量 登陆许可
功能 开始_点击()
    变量 线程句柄 = 数组()
    变量 多开数量 = 5
    遍历(变量 i = 0; i < 多开数量; i++)
        调试输出(线程句柄[i] = 线程开启("登录开始",i))
        //等待(800)
        调试输出("开启线程处")
    结束
   
    登陆许可 = 临界区创建()
   
结束

功能 登录开始(序号)
    临界区进入(登陆许可)
    遍历(变量 i = 0; i<10 ; i++)
        调试输出(序号)
        等待(500)
    结束
    临界区离开(登陆许可)
结束

作者: qq2290081353    时间: 2016-8-17 12:52
言术 发表于 2016-8-17 12:38
如果你先创建临界区,这时线程只能一个个创建,必须等前一个线程结束才能运行下一个,也就是你所说的问题。 ...

感谢你,谢谢大家我自己解决了,我的目的就是想让线程一个一个的执行登录一个完成后才执行另一个貌似又犯了马虎病临界区句柄输错了




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1