TC官方合作论坛

 找回密码
 立即注册
楼主: 1525299008

[已解决] 做2个子窗口都各有一个线程,同时开启。怎么才能不相互...

[复制链接]
 楼主| 发表于 2013-11-18 13:32:14 | 显示全部楼层
本帖最后由 1525299008 于 2013-11-18 13:33 编辑
kaixindexifan 发表于 2013-11-18 13:02
你创建一个临界区句柄 这个变量定为全局变量 然后就按刚才说的 进入临界区句柄 按键 离开临界区句柄  两 ...


第一个线程         第二个线程
进入临界区         进入临界区
按键1                    按键8
退出临界区         退出临界区
进入临界区         进入临界区
按键2                     按键9
退出临界区         退出临界区
进入临界区         进入临界区
按键3                     按键0
退出临界区         退出临界区

每个线程是无限循环的。是这个样子吗?
回复 支持 反对

使用道具 举报

发表于 2013-11-18 17:53:27 | 显示全部楼层
1525299008 发表于 2013-11-18 13:32
第一个线程         第二个线程
进入临界区         进入临界区
按键1                    按键8

差不多了是这样,还有个细节就是 临界区句柄,根据你的需要 看是创建几个临界区句柄  你可以自己调试调试  有什么问题再贴出来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-19 09:36:02 | 显示全部楼层
本帖最后由 1525299008 于 2013-11-19 09:46 编辑
kaixindexifan 发表于 2013-11-18 17:53
差不多了是这样,还有个细节就是 临界区句柄,根据你的需要 看是创建几个临界区句柄  你可以自己调试调试 ...


思考了半天,当我明白临界区的原理时,我到不会写代码了。什么时候1键进去,什么时候8键进去,怎么个写法?还有个问题,控件.模态窗口和控件.打开窗口  的区别?

回复 支持 反对

使用道具 举报

发表于 2013-11-19 11:48:10 | 显示全部楼层
1525299008 发表于 2013-11-19 09:36
思考了半天,当我明白临界区的原理时,我到不会写代码了。什么时候1键进去,什么时候8键进去,怎么个写法 ...

临界区是这样一种意思,它好比一个空着的电话亭,当你有代码需要进入的临界区的时候,他会先判断电话亭里面是否已经有人(就好比看是否有代码已经进入临界区),如果没人,就进去打电话,然后按照你设计的代码,在正确的时候离开电话亭(离开临界区);当判断电话亭里面有人在打电话的时候,他会在外面等待,(你的程序就会停止在进入临界区那里)一直到里面的人出来后,他才会进入临界区。所以我说了,有时候根据需要,你可以多建设几个电话亭(临界区),让你的代码运行更加流畅。

至于你的第二个问题,希望你参考tc官方手册,你打开tc编程软件,右上角有个问号,你点击就会弹出手册的,看来你是从按键过来的,你没事先多看看tc手册,你把基础学会了后,你会发现tc比按键简单好用多了{:soso_e102:}

回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-19 12:23:45 | 显示全部楼层
kaixindexifan 发表于 2013-11-19 11:48
临界区是这样一种意思,它好比一个空着的电话亭,当你有代码需要进入的临界区的时候,他会先判断电话亭里 ...

原理我是知道的,我是想说,把一个循环作为一个单位,这个我到可以理解,也知道做好后,软件是怎么运行的。先是运行第一个线程里的循环,当第一个线程循环结束后,在进行第2个线程的循环。可是我要的是2个循环里每个按键,要类似同步。
我把循环里的每个按键,都加了临界区后,我想知道,他到底怎么运行呀。是先运行按键1,然后跑到第2个线程里的循环里执行按键8,然后又蹦回到第一个线程里的循环里执行下一个按键吗?能明白我的想法吗?呵呵
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-19 12:24:08 | 显示全部楼层
kaixindexifan 发表于 2013-11-19 11:48
临界区是这样一种意思,它好比一个空着的电话亭,当你有代码需要进入的临界区的时候,他会先判断电话亭里 ...

原理我是知道的,我是想说,把一个循环作为一个单位,这个我到可以理解,也知道做好后,软件是怎么运行的。先是运行第一个线程里的循环,当第一个线程循环结束后,在进行第2个线程的循环。可是我要的是2个循环里每个按键,要类似同步。
我把循环里的每个按键,都加了临界区后,我想知道,他到底怎么运行呀。是先运行按键1,然后跑到第2个线程里的循环里执行按键8,然后又蹦回到第一个线程里的循环里执行下一个按键吗?能明白我的想法吗?呵呵
回复 支持 反对

使用道具 举报

发表于 2013-11-19 12:45:19 | 显示全部楼层
1525299008 发表于 2013-11-19 12:24
原理我是知道的,我是想说,把一个循环作为一个单位,这个我到可以理解,也知道做好后,软件是怎么运行的 ...

先运行谁,后运行谁,是你编写代码说了算,看你怎么编写;线程开启后,就在运行了,两个线程两个循环同时在运行,至于你说的什么先运行线程1再跑线程2那是不对的,我说的很清楚了,假如你现在只有一个临界区,那么线程1和线程2都需要使用这个共同的临界区的时候,当需要进入临界区的时候,他们就会依次排队等待。

你可以测试

比如线程1 你把循环频率调到 没10秒执行一次循环

线程2 你把循环调到没2秒执行一次循环

你试下 就清楚了

如果用键盘按键在游戏里面不容易分别

你就弄两个记事本

分别向里面写东西



回复 支持 反对

使用道具 举报

发表于 2013-11-19 12:48:36 | 显示全部楼层
1525299008 发表于 2013-11-19 12:24
原理我是知道的,我是想说,把一个循环作为一个单位,这个我到可以理解,也知道做好后,软件是怎么运行的 ...

你直接说 你需要实现怎么样的按键  说清楚点 我看看能不能帮你写出来{:soso_e102:}

回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-11-19 17:01:09 | 显示全部楼层
kaixindexifan 发表于 2013-11-19 12:45
先运行谁,后运行谁,是你编写代码说了算,看你怎么编写;线程开启后,就在运行了,两个线程两个循环同时 ...

首先不是让2个线程里的2个循环,通过时间间隔分别进入临界区,来依次执行。
而是让2个线程里的2个循环,同时执行。关键点在于让每个循环里的每个按键,尽量同时按下(理论上是不可能的),只是我们肉眼看不出来而已。(按键精灵里的效果是,我建个打怪F1启动,F2停止。在建个加血F3启动,F4停止。当都启动时,在打怪的同时,也在同时加血)
而现在我用TC能做的代码效果是,按下热键后,让2个线程同时启动,要么是第一个线程里的循环在运行,要么是第二个线程在运行。
比如我的第一个线程循环里是按下A,50次。按下B,50次,在按下1键,50次。
第二个线程循环里是按下8,2次,按下9,2次,按下0,3次。关键点是在打怪的同时,还不停的加血.
回复 支持 反对

使用道具 举报

发表于 2013-11-19 20:12:12 | 显示全部楼层
1525299008 发表于 2013-11-19 17:01
首先不是让2个线程里的2个循环,通过时间间隔分别进入临界区,来依次执行。
而是让2个线程里的2个循环, ...

把你代码直接贴出来
回复 支持 反对

使用道具 举报

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

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

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

GMT+8, 2024-9-23 05:52 , Processed in 0.047123 second(s), 20 queries .

Powered by 海安简单软件服务部

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

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