TC官方合作论坛

标题: 关于临界区的问题,我自己想了一天也没有想通,请教大神 [打印本页]

作者: aimei_8866999    时间: 2013-5-9 06:29
标题: 关于临界区的问题,我自己想了一天也没有想通,请教大神
我写了一个简单的脚本,是四开喊话的,每个号有分成当前喊话世界喊话,就是每个号用到两个线程,4个号总共是8个线程
现在的问题是我使用进入临界区,要实现的功能是 四个号每个号的当前喊话世界喊话的8个线程每次只能有一个线程有效
这个用临界区实现的过程我知道,但是现在有一个新的问题,当前喊话 是每隔30秒喊一次     世界喊话是每隔5分钟喊一次
这里我打算用到8个循环来控制这个喊话间隔,但是有一点我想不明白
就是用代码怎么实现 当我第一个号的当前喊话 喊了之后 需要 辅助.等待(30000)之后再去抢这个进入临界区的事件,
怕说的不明白,在说个例子,当我第一个号世界喊话之后   辅助.等待  5分钟  在去抢这个进入临界区的事件

我是不是太笨了,想了好久都没想出来我搜索了论坛  没有看到关于怎么实现 抢到进入临界区了,运行完代码,立即离开临界区,然后这个线程等待我设置的一个时间间隔 之后再去抢进入临界区

作者: 幼园留级老油条    时间: 2013-5-9 07:32
牛逼
作者: a8461959    时间: 2013-5-9 08:18
喊话貌似不需要临界区吧,一般只有前台多开有鼠标键盘操作的时候才用到
作者: cylhb    时间: 2013-5-9 08:30
-.-!!!!
循环
1.进入
2.执行操作
3.离开
4.等待
循环结束

这不就结了?
作者: fire    时间: 2013-5-9 08:57
我是这样理解的:
四开,开启当前喊话,5分钟后世界喊话,循环


  1. 空间 测试
  2. //默认空间
  3. 变量 句柄=数组[3]
  4. 功能 开启喊话()//开启喊话功能
  5.     for(i=0; i<4; i++)
  6.         句柄[i] = 线程.开启("测试.当前喊话",i)
  7.     endfor
  8. 功能结束
  9. 功能 世界喊话(参数)//世界喊话
  10.     线程.暂停(句柄[参数])
  11.    
  12.     //你的世界喊话代码
  13.    
  14.     线程.恢复(句柄[参数])
  15. 功能结束
  16. 功能 当前喊话(参数)//当前喊话
  17.    
  18.     //你的当前喊话代码
  19.    
  20. 功能结束
  21. 功能 定时器0_时钟()//定时世界喊话
  22.     //这里添加你要执行的代码
  23.     for(i=0; i<4; i++)
  24.         线程.开启("测试.世界喊话",i)
  25.     endfor
  26. 功能结束
  27. 功能 按钮0_点击()//开启/关闭 喊话功能
  28.     //这里添加你要执行的代码
  29.     选择(按钮.获得文本("按钮0"))
  30.         条件"喊话开启":
  31.         线程.开启("测试.开启喊话","")
  32.         定时器.注册("定时器0",300000)
  33.         按钮.设置文本("按钮0","喊话关闭")
  34.         条件"喊话关闭":
  35.         定时器.销毁("定时器0")
  36.         for(i=0; i<4; i++)
  37.             线程.关闭(句柄[i])
  38.         endfor
  39.         按钮.设置文本("按钮0","喊话关闭")
  40.     选择结束
  41. 功能结束
  42. 空间结束
  43. //空间结束语句
复制代码

有用..点呢啥...

作者: zhkq    时间: 2013-5-9 09:22
我的理解:
1、多开应该是后台,所以不用考虑多个游戏窗口间动作会不会冲突,所以多窗口之间不用进入临界区。
2、同窗口内的两个动作需要考虑是否动作冲突,可以对动作顺序进行控制避免冲突也用不到什么临界区。
示例如下:
变量 窗口句柄,线程句柄

功能  开始_点击()
遍历(i=0;i<4:i++)
        窗口句柄=获得句柄。。。。
        线程句柄=线程.开启(“测试.喊话”,i)
遍历结束
功能结束

功能 喊话(n)
循环(真)
    遍历(i=0;i<10:i++)
        测试.当前喊话(n)
        辅助.等待(30000)
    遍历结束
    测试.世界喊话(n)
遍历结束
功能结束


作者: 舍我其谁    时间: 2013-5-9 11:05
临界区  就  是 电话亭
作者: aimei_8866999    时间: 2013-5-9 18:32
回复 5楼fire的帖子

谢谢你写的这么详细,不过我要用到临界区来完成的
作者: aimei_8866999    时间: 2013-5-9 18:36
回复 6楼zhkq的帖子

我四开使用的前台平铺的,在每次当前喊话和世界喊话 都要确定当前是否有人在交易我,所以每次喊话之前都要找一个图片来确定是否可以喊话的,不过还是感谢你
作者: aimei_8866999    时间: 2013-5-9 18:38
回复 4楼cylhb的帖子

我以为离开临界区 之后的代码都不执行了,我想错了,还是版主厉害,几句话搞定,采纳你了,以后再有小白遇见这样的问题,搜索论坛就可以看到
作者: aimei_8866999    时间: 2013-5-9 18:39
现在怎么采纳的哪个选项没有啦
作者: zhkq    时间: 2013-5-9 20:32
回复 10楼aimei_8866999的帖子

没矛盾吧,呵呵,现在这个仍然可以写呀!你继续好好想想把。




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