TC官方合作论坛

 找回密码
 立即注册
查看: 1193|回复: 6

[已解决] 遍历登录临界区问题,未什么只执行了一次,后面的线程哪里...

[复制链接]
发表于 2016-8-17 01:48:42 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
    多开数量 = 5
临界许可 = 临界区创建()
    遍历(变量 i = 0; i < 多开数量; i++)
        线程句柄[序号] = 线程开启("登录开始",i)
        等待(800)
    结束

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

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

回复

使用道具 举报

发表于 2016-8-17 12:38:22 | 显示全部楼层
如果你先创建临界区,这时线程只能一个个创建,必须等前一个线程结束才能运行下一个,也就是你所说的问题。解决办法是先把线程全部创建完,再创建临界区。
比如:
变量 登陆许可
功能 开始_点击()
    变量 线程句柄 = 数组()
    变量 多开数量 = 5
    遍历(变量 i = 0; i < 多开数量; i++)
        调试输出(线程句柄[i] = 线程开启("登录开始",i))
        //等待(800)
        调试输出("开启线程处")
    结束
   
    登陆许可 = 临界区创建()
   
结束

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

使用道具 举报

发表于 2016-8-17 06:03:27 | 显示全部楼层
线程句柄[序号]    这个序号定义在哪?为什么不用 i 呢?
回复 支持 反对

使用道具 举报

发表于 2016-8-17 07:43:56 | 显示全部楼层
你好像在这下面少了:线程等待(线程句柄[序号] ,NNNNN)
线程句柄[序号] = 线程开启("登录开始",i)
另外你上面明明是“临界许可 = 临界区创建()”  下面为啥是“临界区进入(登陆许可)”?

我也不太懂随便说说,错了千万包涵......
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-17 11:03:00 | 显示全部楼层
liuhaiyan008 发表于 2016-8-17 07:43
你好像在这下面少了:线程等待(线程句柄[序号] ,NNNNN)
线程句柄[序号] = 线程开启("登录开始",i)
另外 ...

临界区不就是让线程排队等待吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-17 11:05:03 | 显示全部楼层
言术 发表于 2016-8-17 06:03
线程句柄[序号]    这个序号定义在哪?为什么不用 i 呢?

感谢,复制的时候马虎了,不过还是没能解决, 不要临界区瞬间5个线程开启了,加了临界区只开启一个后边就没反应了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-17 12:52:44 | 显示全部楼层
言术 发表于 2016-8-17 12:38
如果你先创建临界区,这时线程只能一个个创建,必须等前一个线程结束才能运行下一个,也就是你所说的问题。 ...

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-27 23:45 , Processed in 0.041657 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

快速回复 返回顶部 返回列表