TC官方合作论坛
标题:
还是一个关于线程的 这么做会不会出问题
[打印本页]
作者:
xenolss
时间:
2012-5-16 17:50
标题:
还是一个关于线程的 这么做会不会出问题
关键是调试的时候不能同时在游戏里执行 不然就自己判断了!请遇到过的大神们帮忙讲解一下这样会不会有问题
function bool detect()
int dx,dy
while(true)
dm.FindStr(x1,y1,x2,y2,"xxx","ffffff-000000",1.0,dx,dy)
if(dx>0)
......各种处理鼠标移动 键盘等等
else
break
endif
endwhile
dx=-1
dy=-1
return true
endfunction
以上代码
线程1 访问 并且执行到 if(dx>0)的各种语句里去了 并未执行完毕 dx这个时候是个正数 得到了找字的左上坐标
然后这个时候线程1暂停挂起了。。
然后线程2 同时也访问这个功能了 。。。。。这个时候 dx的值是线程1赋予的那个值吗 如果是这样。。。
如果线程2 找不到xxx这个字 也会执行if(dx>0) 下面的各种操作 那不是bug了吗
我可以多些几个相同的功能分别给不同的线程调用防止这样的事 发生
但是我不知道上面的结论会不会出现
请教!
作者:
tyuyan
时间:
2012-5-16 17:55
另个线程访问同一个值是可能会混乱的,可以了解下TC的临界区。
作者:
菜鸟学脚本
时间:
2012-5-16 17:59
回复
1楼
xenolss
的帖子
两个线程 他们是不会相互干扰的,你还没理解线程的概念,所以不会出现你那种情况,就像一个人同时用左手和右手,左手不会应为右手在做事左手就不动了是一个道理。他们可以同时动,他们之间是没有相互影响的
如果对你有帮助请采纳
作者:
xenolss
时间:
2012-5-16 18:02
回复
2楼
tyuyan
的帖子
谢谢三姐热心回复
临界区的概念我看了很多遍 还是很模糊
临界区帮助文档里写的是 赋予一个线程句柄 给这个线程创造一个临界区
是指这个意思吗
这个线程对象目前访问的功能函数 就是文档里说的临界区的资源 就是被保护状态?
其他线程无法访问?
作者:
xenolss
时间:
2012-5-16 18:07
回复
3楼
菜鸟学脚本
的帖子
。。。三姐说会引起混乱
我还是自己写个别的脚本试试吧 写2个大延迟的 不同线程 看看同一个功能里的值 到底会不会改变
作者:
cylhb
时间:
2012-5-16 19:04
不可能的.
非全局函数,多线程各不影响
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1