tc简单开发吧,百度贴吧。
精品区。
tc简单开发。多线程技术1。
.
在tc1.0版以前,脚本执行的方式,都是单线程的。
单线程好比是公路上的单行道,脚本代码只能一条一条的执行,按顺序的执行。
而多线程,则提供了多车道。
多线程像公路上的行车道,超车道,单车道,人行道,多个脚本的代码,可以同时的执行,并排的执行。
………………
………………
在tc简单开发中,
线程是开启着的子函数,多线程,就是多个开启着的子函数!
(函数在tc中又叫功能)。
一子函数在一边放着,没有动,这样不能算做一个线程。
………………
………………
1、一个线程由BeginThread命令,和下面跟着的子函数组成。
例子:
线程ID = threadbegin("子函数", "")
//
功能 子函数()
//从这里开始你的代码
结束
(ajjl,易语言中的多线程,操作方法大同小异。)
………………
………………
2、使用threadbegin命令,一定要事先做好“全局变量”。tc中规定,写在功能外面的var 是“全局变量”。
var 线程ID0, 线程ID1, 线程ID2
功能 子函数0()
//从这里开始你的代码
结束
功能 子函数1()
//从这里开始你的代码
结束
功能 子函数2()
//从这里开始你的代码
结束
//
功能 启动_热键()
var ret = 线程获取状态(线程ID0)
if(ret == 假)
线程ID0 = 线程开启("子函数0", "")
线程ID1 = 线程开启("子函数1", "")
线程ID2 = 线程开启("子函数2", "")
end
结束
功能 终止_热键()
线程关闭(线程ID0)
线程关闭(线程ID1)
线程关闭(线程ID2)
结束
线程0,线程1,线程2这三台车,是同时在三条车道上运行着的。
………………
………………
3、多个线程,可以使用同一个子函数。
示例1:
var 线程ID0, 线程ID1, 线程ID2
功能 启动_热键()
var ret = 线程获取状态(线程ID0)
if(ret == 假)
线程ID0 = 线程开启("子函数", "0")
线程ID1 = 线程开启("子函数", "1")
线程ID2 = 线程开启("子函数", "2")
end
结束
功能 终止_热键()
线程关闭(线程ID0)
线程关闭(线程ID1)
线程关闭(线程ID2)
结束
功能 子函数(i)
while(1)
traceprint("线程" & i)
sleep(1000)
end
结束
//
//
示例2:商业辅助的写法。
1,用数组来保存 线程ID.
2,多个线程,使用同一个子函数.
var 线程ID = 数组()
功能 启动_热键()
var ret = 线程获取状态(线程ID[0])
if(ret == 假)
for(var i = 0; i < 3; i++)
线程ID[i] = 线程开启("子函数", i)
end
end
结束
功能 终止_热键()
for(var i = 0; i < 3; i++)
线程关闭(线程ID[i])
end
结束
功能 子函数(i)
while(1)
traceprint("线程" & i)
sleep(1000)
end
结束
………………
………………
4、在线程中,可以使用命令开启,关闭,暂停,恢复某一线程。
线程开启()
线程关闭()
线程暂停()
线程恢复()
参数1填的,都是线程ID。
//
多线程的优点:
脚本相互制约,相互作用,减少代码量。
………………
………………
5、线程开启() 的代码,禁止放入循环内。
如果线程开启() 放在循环内,循环着开启线程,
内存会被消耗干净,卡死电脑。严重的会烧坏CPU。
………………
………………
6、线程是占用 运算核心的。
一线程就是 一条生产线。
多线程就是 多条生产线。
现在的CPU,i3__双核4线程。i5__4核8线程。i7__8核8线程。
单核CPU在同一时间,只能照着2线程。多核心的,参考上面的文字说明。
在编写辅助时,必须减少线程的数量,提高线程的质量。
每1线程对应 1窗口,
43线程对应 43窗口。
.
mm198702:
这个和 取消勾选“禁止重复运行”,效果一样的吧?
.
卡特琳娜的旋转:
不一样。
在同一脚本中的多线程,可以共享数据的。
而多个脚本之间的线程,数据难以沟通共享。 |