lua运行时,可以运行到某处暂缓100毫秒,然后再继续运行吗?我设置了一个循环体,通过对os.clock不断比较来控制是否退出循环运行下面的代码。问题在于这样太耗cpu了...
lua运行时,可以运行到某处暂缓100毫秒,然后再继续运行吗? 我设置了一个循环体,通过对os.clock不断比较来控制是否退出循环运行下面的代码。问题在于这样太耗cpu了,一个30毫秒要循环几十万次。 手机提问,还不知道会被丢到哪个版块。
LUA里面没有pause/sleep之类的函数。
这是因为LUA是用 ANSI C实现的, ANSI C里面没有暂停,所以LUA里面也没有。
下面是一种比较消耗CPU的方法:
local clock = os.clock
function sleep(n)-- seconds
local t0 = clock()
while clock()- t0 <= n do end
end
下面是Windows底下通过调用Windows Host Script的一种方法:
function sleep(n)
local vb = "test.vbs"
local f = assert(io.open(vb,"w"))
f:write("WScript.Sleep(" .. (tonumber(n) * 1000) .. ")\n")
f:close()
os.execute(vb)
end
此外,也可以通过调用ping命令来实现这个功能:
function sleep(n)
if n > 0 then
os.execute("ping -n " .. tonumber(n+1) .. " localhost > NUL")
end
end
啊喂= =
require函数怎么可能没有= =
require是Lua里面很基本的一个函数,用来加载外部库的= =
你再试试看= =
上面给出的两个函数都是浪费资源的,一个操作了一次文件,一个调用了控制台
大概是因为我的lua环境只是一个程序附带的扩展部分,不是独立的Lua环境
= =b
算了,只要不消耗太大的CPU就能实现暂停功能就可以了。总之也谢谢你了。
socket是Lua很重要的一个库,它提供了大部分的网络资源的说……你去下载一个Lua for Windows 5.1.4或者去搜索Luaet 5.2.1吧= =你不要用那么蛋疼的办法= =而且有luacom库可以直接调用ws你还直接写文件再去运行这不是蛋疼是什么= = = = ==
要学Lua的话尽量去用完整的吧,如果只是临时用一下那随便你了...
暂停的方法是很多的,socket.sleep是最常见和最正常的实现= =
LUA没有任何停顿/睡眠功能。
这是因为Lua是在ANSI C,ANSI C实现,没有停顿,没有LUA内。
以下是CPU密集型的方法:
本地时钟= os.clock
功能休眠(N) - 秒
当地T0 =时钟() />时钟() - T0 = N年底
结束
下面的视窗
功能休眠通过调用Windows主机脚本:(N)
当地VB =“Test.vbs的”
当地F =(io.open(VB,“W”))
传真:写(“WScript.Sleep(”..(tonumber(N)* 1000 )..“)\ n”)
传真:关闭()
os.execute(VB)
结束
此外,还可以调用ping命令实现这样的功能:功能休眠(N)
如果n> 0,则
os.execute(“平-N .. tonumber(N +1)的”localhost> NUL “)
的末尾
结束