TC官方合作论坛
标题:
循环里运行临界区程序就卡死!
[打印本页]
作者:
sc2908
时间:
2014-5-7 13:49
标题:
循环里运行临界区程序就卡死!
这个怎么解决啊
比如我 要 循环 找 两个图
功能 找图1()
循环(真)
dm.FindPic(0,0,1024,768,"地图1.bmp","000000",0.9,0,x,y)
如果(x>0)
线程.进入临界区(对象句柄)
超级鼠标.移动(x,y)
辅助.等待(50)
超级鼠标.左键单击(1)
线程.离开临界区(对象句柄)
如果结束
循环结束
功能结束
功能 找图2()
循环(真)
dm.FindPic(0,0,1024,768,"地图2.bmp","000000",0.9,0,x1,y1)
如果(x1>0)
线程.进入临界区(对象句柄)
超级鼠标.移动(x1,y1)
辅助.等待(50)
超级鼠标.左键单击(1)
线程.离开临界区(对象句柄)
如果结束
循环结束
功能结束
对象句柄=线程.创建临界区() //创建临界区对象
句柄A=线程.开启("事件测试A.找图1",对象句柄)
句柄B=线程.开启("事件测试A.找图2",对象句柄)
线程.等待(句柄A,-1)
线程.等待(句柄B,-1)
线程.删除临界区(对象句柄)
我要 无限找 这两个 图 找到了 就去 依次点击
怎么问题来了 我 发现 死循环里面 运行 或则长时间 运行 进入和 离开 临界区的 功能 程序就 卡死了 有没什么方法 解决啊!
作者:
sc2908
时间:
2014-5-7 14:17
对象句柄=线程.创建临界区() //创建临界区对象
句柄A=线程.开启("事件测试A.找图1",对象句柄)
句柄B=线程.开启("事件测试A.找图2",对象句柄)
奶奶的 原来 是 下面这个几条 口令的 问题!
线程.等待(句柄A,-1)
线程.等待(句柄B,-1)
线程.删除临界区(对象句柄)
去掉下面的 口令 就正常了 哎 看来 那个 帮组文档也不能 全抄啊!
作者:
jimye0526
时间:
2014-5-7 16:38
你用法不对,你这样频繁的进入出去临界区,而且是多个线程线程抢一个临界区 有点坑啊你
一般临界区里经量写的是代码块,你就这一点点代码,而且循环每个延时,还有你就不能开一个线程么,你这个代码一个线程不用临界区,就顺序找图也可以实现啊
作者:
sc2908
时间:
2014-5-7 17:23
我 几千行的代码不可能都 发布上来吧!
只是 打个 比方啊! 再说 意思都一样
我 做一个游戏 的 前台3开
那么 没几秒 可能就 要 切换窗口一次 暂停其他 线程一次啊!
作者:
墨染年华
时间:
2014-5-7 17:38
你不行就用线程 事件来控制 找1 不找2 找2不找1 依次寻找
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1