TC官方合作论坛

标题: 多线程求不互相干扰。。。。 [打印本页]

作者: 1525299008    时间: 2013-11-12 11:41
标题: 多线程求不互相干扰。。。。
同时开两个线程,而且两个线程还不互相干扰,如何解决?谢谢

作者: TC    时间: 2013-11-12 11:53
本身来说,他们就是不互相干扰的
http://bbs.tyuyan.com/thread-33127-1-1.html
看看这课
作者: 星.月    时间: 2013-11-12 12:08
如果不是占用同一个资源,线程之间就是不会互相干扰的。占用同一个资源,比如前台的,一个线程要鼠标移动到100,100,另一个线程在移动到50,50,当同时开启两个线程,就不知道哪个先哪个后了,这时可以用临界区来让它们进行排序运行。帮助文档在线程空间里这一方面说的很详细,有例子
作者: 1525299008    时间: 2013-11-12 12:44
星.月 发表于 2013-11-12 12:08
如果不是占用同一个资源,线程之间就是不会互相干扰的。占用同一个资源,比如前台的,一个线程要鼠标移动到 ...

一个线程里有鼠标和按键(人物做一个动作),另一个线程有按键(人物做另外一个动作)。是不是所说的同一个资源?
假设,如果有3个线程,我先让第一个线程开始,第2、3线程等待,等第一个线程结束后停止,这时第2、3线程同时开始。这样的顺序反复循环。这样的思路就是需要用到临界点的知识了?还需要其他什么知识?

作者: 星.月    时间: 2013-11-12 15:37
1525299008 发表于 2013-11-12 12:44
一个线程里有鼠标和按键(人物做一个动作),另一个线程有按键(人物做另外一个动作)。是不是所说的同一 ...

只要两个线程不要同时使用按键,或者同时使用鼠标就ok,同时用到了就用临界区,线程一个先开,运行完了,再开另一个线程,不会占用同一资源
作者: 1525299008    时间: 2013-11-12 15:59
本帖最后由 1525299008 于 2013-11-12 16:08 编辑
星.月 发表于 2013-11-12 15:37
只要两个线程不要同时使用按键,或者同时使用鼠标就ok,同时用到了就用临界区,线程一个先开,运行完了, ...

现在还不会临界点的知识。所以凭现有的知识,想个思路。请您看看。

在一个大循环里,判断找图,没找到的话,就关掉线程2和线程3,并执行线程1(1是不循环的),否则就关掉线程1,并同时执行线程2和线程3.      (线程2和线程3都是无限循环的)           

这样的思路有什么问题吗?比如说有可能会不会卡住。现在的状况是,2和3可以同时开启,这个影响不大。但是1不能和2或者3或者2、3同时开启。

这里有个问题,当找到图后,同时执行线程1和线程2,这个图会一定时间里不变,所以会反复同时执行线程2和线程3,不停点起线程2和线程3,会不会卡住?如果有,有什么方法解决?

作者: 星.月    时间: 2013-11-12 16:43
1525299008 发表于 2013-11-12 15:59
现在还不会临界点的知识。所以凭现有的知识,想个思路。请您看看。

在一个大循环里,判断找图,没找到的 ...

你这个肯定不能通过找到图就开启一个线程,而且这个线程还是无限循环的,当图一直存在的时候,线程开的越来越多,而且每次线程句柄都重新赋值了,关都关不了。思路就不对,把那些无限循环的线程独立出来,循环里加判断,什么时候跳出循环。如果是像做主线任务那种无限循环,找到图就点,同时另一个线程在无限循环判断验证码出现,最好用临界区了,主线还要分段进行
作者: 舍我其谁    时间: 2013-11-12 17:03
去理解 一下 什么  叫  线程   ,   
作者: 1525299008    时间: 2013-11-13 09:07
星.月 发表于 2013-11-12 16:43
你这个肯定不能通过找到图就开启一个线程,而且这个线程还是无限循环的,当图一直存在的时候,线程开的越 ...

我再改变一下思路,如果线程2和线程3都不是无限循环呢?,也就是说1、2、3都执行一遍,利用找图,反复循环判断,是不是可以解决问题?

作者: 星.月    时间: 2013-11-13 10:09
1525299008 发表于 2013-11-13 09:07
我再改变一下思路,如果线程2和线程3都不是无限循环呢?,也就是说1、2、3都执行一遍,利用找图,反复循 ...

可以解决




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1