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