[编程]lua有暂停运行的函数吗?

2025-04-05 00:43:18
推荐回答(4个)
回答1:

如果你是在 Linux 环境下,可以使用如下方法:
os.execute("sleep 0.1s")

如果你是在 Windows 环境下,推荐使用 w32wrappers (https://github.com/luaforge/w32wrappers)
可以使用其中的 w32.Sleep(100) 方法。

回答2:

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

回答3:

Lua的Socket中有这个的啊...不要用那种脑残办法暂停啊 = =

require"socket"
socket.sleep(0.1) --0.1s=100ms

这样多好啊= =

回答4:

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 “)

的末尾
结束