TC官方合作论坛

 找回密码
 立即注册
查看: 1282|回复: 5

[已解决] 还是一个关于线程的 这么做会不会出问题

[复制链接]
发表于 2012-5-16 17:50:00 | 显示全部楼层 |阅读模式

马上加入TC

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

x
   关键是调试的时候不能同时在游戏里执行  不然就自己判断了!请遇到过的大神们帮忙讲解一下这样会不会有问题
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了吗

我可以多些几个相同的功能分别给不同的线程调用防止这样的事 发生
但是我不知道上面的结论会不会出现
请教!

回复

使用道具 举报

发表于 2012-5-16 17:59:50 | 显示全部楼层
回复 1楼xenolss的帖子

两个线程 他们是不会相互干扰的,你还没理解线程的概念,所以不会出现你那种情况,就像一个人同时用左手和右手,左手不会应为右手在做事左手就不动了是一个道理。他们可以同时动,他们之间是没有相互影响的

如果对你有帮助请采纳
回复 支持 反对

使用道具 举报

发表于 2012-5-16 17:55:41 | 显示全部楼层
另个线程访问同一个值是可能会混乱的,可以了解下TC的临界区。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-16 18:02:05 | 显示全部楼层
回复 2楼tyuyan的帖子

  谢谢三姐热心回复
临界区的概念我看了很多遍 还是很模糊  
临界区帮助文档里写的是 赋予一个线程句柄 给这个线程创造一个临界区
是指这个意思吗
这个线程对象目前访问的功能函数  就是文档里说的临界区的资源  就是被保护状态?
其他线程无法访问?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-5-16 18:07:52 | 显示全部楼层
回复 3楼菜鸟学脚本的帖子

   。。。三姐说会引起混乱
我还是自己写个别的脚本试试吧  写2个大延迟的 不同线程   看看同一个功能里的值 到底会不会改变
回复 支持 反对

使用道具 举报

发表于 2012-5-16 19:04:00 | 显示全部楼层
不可能的.
非全局函数,多线程各不影响
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-6-2 21:47 , Processed in 0.035204 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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