一般我们可以使用 thread.invoke() 函数简单快捷的创建线程,
而 thread.create() 的作用和用法与 thread.invoke() 一样,唯一的区别是 thread.create()会返回线程句柄。
线程句柄可以用来控制线程(暂停或继续运行等等),
如果不再使用线程句柄,应当使用 raw.closehandle() 函数关闭线程句柄(这个操作不会关停线程)
有了线程句柄,我们可以使用 thread.waitOne() 等待线程执行完毕,
而且 thread.waitOne() 还可以一边等待一边处理界面消息(让界面不会卡死)。
下面看一下aardio范例里的多线程入门示例:
import console;
var thrdHandle = thread.create(
function(){
import console;
thread.lock("写控制台",function(){
console.log("线程在执行",thread.getId() )
})
//这里如果高级点可以用 thread.event来实现信号判断,参考本目录下的定时器范例
while(!thread.get("红灯停")){
console.log("线程在执行",time() )
sleep(1000)
}
console.log("停了!")
}
)
thread.suspend(thrdHandle) //使用线程句柄就可以控制线程,例如下面的函数暂停线程
thread.resume(thrdHandle) //线程恢复运行
var act = thread.stillActive(thrdHandle) //线程是否在运行
sleep(3000)
//每个线程的全局变量环境都是独立的,而 thread.set() 则用于设置所有线程共享的全局变量。
thread.set("红灯停", true)
thread.waitAll(thrdHandle)
//句柄不用的时候一定要用下面的函数关闭(切记:句柄是绝对不会自动释放的),关闭句柄并不会关闭线程
raw.closehandle(thrdHandle)
thread.invoke(
function(){
import console;
console.log("线程在执行",thread.getId() )
}
)
sleep(100)
console.pause(true);
您可以使用 thread.command 在线程间交互通信,请参考《多线程开发入门》
您还可以使用 thread.event 来实现线程间的同步,请参考《多线程中的交通信号灯:thread.event》
或者使用 thread.works、thread.manage 这些线程管理器来批量的管理线程句柄,
请参考此目录中的其他范例。
主题数 10 | 今日评论 0 | 今日主题 0 |