如何在Lua中以毫秒精度设置超时?

当我尝试像这样在Lua中设置超时时:

function wait(seconds)
    local start = os.time()
    repeat until os.time() > start + seconds
end

它不够一致。有没有更精确的方法来设置超时,以便始终等待请求的时间?

点赞
用户2858170
用户2858170

在 Lua 中,如果不使用外部库,基本上只有两种方法可以获得更高的精度。

  1. 使用 os.clock
  2. 运行循环,并查找需要多少时间完成多少个迭代。

正如 Nicol 指出的那样,在非实时操作系统(如Windows)中,这两种方法都会不一致和不可靠。

如果您的操作系统由于某种原因决定将 CPU 降频或在后台执行某些其他操作,那么您就注定要失败。

因此,请考虑您的应用程序,并决定是否在非实时操作系统上运行。

2021-03-10 07:15:23
用户11740758
用户11740758

在可以编译自己的东西的机器上,有一种方法可以构建不会占用任何 CPU 时间的 sleep 和 msleep 函数…

参考链接:http://www.troubleshooters.com/codecorn/lua/lua_lua_calls_c.htm

…用于:创建一个 msleep() 函数

2021-03-10 08:51:22