TC官方合作论坛

 找回密码
 立即注册
查看: 1170|回复: 11
打印 上一主题 下一主题

[已解决] 关于临界区的问题,我自己想了一天也没有想通,请教大神

[复制链接]
跳转到指定楼层
楼主
发表于 2013-5-9 06:29:53 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

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

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

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

使用道具 举报

地板
发表于 2013-5-9 08:30:27 | 只看该作者
-.-!!!!
循环
1.进入
2.执行操作
3.离开
4.等待
循环结束

这不就结了?
回复 支持 反对

使用道具 举报

沙发
发表于 2013-5-9 07:32:02 | 只看该作者
牛逼
回复 支持 反对

使用道具 举报

板凳
发表于 2013-5-9 08:18:54 | 只看该作者
喊话貌似不需要临界区吧,一般只有前台多开有鼠标键盘操作的时候才用到
回复 支持 反对

使用道具 举报

5#
发表于 2013-5-9 08:57:08 | 只看该作者
我是这样理解的:
四开,开启当前喊话,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. //空间结束语句
复制代码

有用..点呢啥...
回复 支持 反对

使用道具 举报

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

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

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

回复 支持 反对

使用道具 举报

7#
发表于 2013-5-9 11:05:26 | 只看该作者
临界区  就  是 电话亭
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2013-5-9 18:32:51 | 只看该作者
回复 5楼fire的帖子

谢谢你写的这么详细,不过我要用到临界区来完成的
回复 支持 反对

使用道具 举报

9#
 楼主| 发表于 2013-5-9 18:36:13 | 只看该作者
回复 6楼zhkq的帖子

我四开使用的前台平铺的,在每次当前喊话和世界喊话 都要确定当前是否有人在交易我,所以每次喊话之前都要找一个图片来确定是否可以喊话的,不过还是感谢你
回复 支持 反对

使用道具 举报

10#
 楼主| 发表于 2013-5-9 18:38:14 | 只看该作者
回复 4楼cylhb的帖子

我以为离开临界区 之后的代码都不执行了,我想错了,还是版主厉害,几句话搞定,采纳你了,以后再有小白遇见这样的问题,搜索论坛就可以看到
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

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

GMT+8, 2025-10-4 20:56 , Processed in 0.194582 second(s), 24 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

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