TC官方合作论坛

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

[问题] 为什么加入临界区就出现内存不足的现象啊!

[复制链接]
跳转到指定楼层
楼主
发表于 2013-10-6 09:19:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

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

x
空间 古剑奇谭2
//默认空间

对象句柄

功能 自动登录()
   
    路径=浏览框.获得("浏览框0")      
    如果(路径=="")
        辅助.消息框("请选择游戏路径!")
       返回 1
        如果结束
    如果(字符串.查找字符串(路径,"GuJian2.exe")<0)
        辅助.消息框("请选择正常的游戏路径!")
        返回 2
        如果结束
    账号=编辑框.获得文本("编辑框0")
   
    如果(账号=="")
    辅助.消息框("请输入账号!")
    返回 3
    如果结束
    密码=编辑框.获得文本("编辑框1")
    如果(密码=="")
    辅助.消息框("请输入密码!")
   返回 4
    如果结束
    进程.打开(路径)
     
    辅助.等待(500)
    //说明:支持多张图片(图片与图片中间使用 竖线隔开)和根据四角的颜色判断是否为透明图
   
    线程.开启("古剑奇谭2.循环线程","")
    辅助.等待(500)
    线程.开启("古剑奇谭2.开始画面","")
    辅助.等待(500)
    线程.开启("古剑奇谭2.登录画面","")
    辅助.等待(500)
    线程.进入临界区(对象句柄)
    辅助.等待(200)
    鼠标.移动(632,587)
    鼠标.左键单击(1)
    辅助.等待(200)
    鼠标.移动(666,376)
    鼠标.左键单击(1)
    线程.离开临界区(对象句柄)

功能结束


功能 循环线程()
    线程.进入临界区(对象句柄)
    图片X坐标,图片Y坐标
    循环(图像.找图(0,0,1440,900,"rc:开始游戏.bmp",0,1.0,0,图片X坐标,图片Y坐标)<0)
        辅助.等待(20)
    循环结束
    鼠标.移动(图片X坐标,图片Y坐标)
    鼠标.左键单击(1)
    线程.离开临界区(对象句柄)  
功能结束
功能 开始画面()
    线程.进入临界区(对象句柄)
    图片X坐标,图片Y坐标
    循环(图像.找图(0,0,1440,900,"rc:cg.bmp",0,0.5,0,图片X坐标,图片Y坐标)<0)
        辅助.等待(20)
    循环结束
    键盘.按键(27,1)
    辅助.等待(1500)
    键盘.按键(27,1)
   线程.离开临界区(对象句柄)
功能结束
功能 登录画面()
    线程.进入临界区(对象句柄)
    图片X坐标,图片Y坐标
    循环(图像.找图(0,0,1440,900,"rc:开始画面.bmp",0,1.0,0,图片X坐标,图片Y坐标)<0)
        辅助.等待(20)
    循环结束
    键盘.发送字符串(编辑框.获得文本("编辑框0"))
    辅助.等待(20)
    键盘.按键(9,1)
    辅助.等待(20)
    键盘.发送字符串(编辑框.获得文本("编辑框1"))
     线程.离开临界区(对象句柄)
功能结束





//开始按钮_点击操作
功能 开始_点击()
    线程.开启("古剑奇谭2.自动登录","")   
功能结束

//退出按钮_点击操作
功能 退出_点击()
   
    辅助.退出()
功能结束
功能 初始化()
对象句柄=线程.创建临界区()
返回 真
功能结束
   


空间结束
//空间结束语句
回复

使用道具 举报

沙发
 楼主| 发表于 2013-10-6 09:23:00 | 只看该作者
本来把找图直接写到外面排下来可以运行的,但是因为是个循环比较容易卡死,就写成线程,但是线程比较多容易混乱,就加入临界区。但是加入临界区之后已启动就弹好几个内存不足的框出来。脚本也不正常运行了。。。求师傅指点下!
回复 支持 反对

使用道具 举报

板凳
发表于 2013-10-6 10:54:31 | 只看该作者
临界区是用来轮流执行共享资源的,如果没有共享资源就不要使用临界区,不是你说的乱了才使用临界区,乱了是因为你的逻辑方法有问题
回复 支持 反对

使用道具 举报

地板
 楼主| 发表于 2013-10-6 11:31:27 | 只看该作者
回复 3楼klyyz1980的帖子

但是这些循环语句如果没有临界区的话,他会不依次执行的,会提早运行,还有之后那些鼠标动作也不是依次运行,线程之间就运行了
回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2013-10-6 11:32:02 | 只看该作者
大神来搭救下!
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2013-10-6 13:54:18 | 只看该作者
空间 临界区测试
//默认空间
对象句柄
功能 线程测试()
线程.开启("临界区测试.线程1","")   
  辅助.等待(50)  
线程.开启("临界区测试.线程2","")      
   
功能结束   
   
功能 线程1()
    线程.进入临界区(对象句柄)
    辅助.消息框("执行线程1")
    辅助.等待(5000)
    线程.离开临界区(对象句柄)
功能结束

功能 线程2()

辅助.消息框("执行线程2")

功能结束


//开始按钮_点击操作
功能 开始_点击()
线程.开启("临界区测试.线程测试","")
功能结束

//退出按钮_点击操作
功能 退出_点击()

辅助.退出()
功能结束
功能 初始化()
   
对象句柄=线程.创建临界区()

功能结束
空间结束
//空间结束语句


就连这么简单的线程测试都会内存不足,怎么回事啊。凡是触及临界区的都会内存不足。或者是我写的临界区脚本有什么问题
回复 支持 反对

使用道具 举报

7#
发表于 2013-10-6 15:23:57 | 只看该作者
搞不懂你这么几行为何要用这么多的线程
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2013-10-6 15:29:12 | 只看该作者
回复 7楼klyyz1980的帖子

这个只是个测试,如果在线程加多些程序他一样内存不足啊
回复 支持 反对

使用道具 举报

9#
发表于 2013-10-6 15:32:47 | 只看该作者
仔细核对帮助文档
回复 支持 反对

使用道具 举报

10#
发表于 2014-8-29 00:40:07 | 只看该作者
线程.开启("临界区测试.线程1","")   
  线程.等待。。。。。。
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

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

关闭

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

GMT+8, 2025-9-25 18:28 , Processed in 0.246549 second(s), 23 queries .

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

© 2001-2013 Comsenz Inc.

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