相关文章推荐
旅行中的伏特加  ·  oracle ...·  8 月前    · 
知识渊博的豆芽  ·  Python: PS ...·  1 年前    · 
作为代价, 很多其他语言中天然支持的功能却不能在 Lua 中找到语言或标准库的直接支持。 其中一个就是sleep功能。 Unix 系统是有sleep的系统调用的, 但非 Unix 系统却不能保证提供。 不过有一个巧妙的方式实现sleep功能(不过还是不通用)。 在 Unix 系统中:
function sleep(n)
  os.execute("sleep " .. tonumber(n))
		利用执行 shell 的sleep命令来间接实现其功能。
		而 Windows 下, 可以用另一个巧妙的方式:
function sleep(n)
  if n > 0 then 
    os.execute("ping -n " .. tonumber(n+1) .. " localhost > NUL")
		利用ping命令的-n参数来实现。
		最后, 上面实现的sleep命令都只能做到秒一级的精度。如果有socket库, 可以实现更高的精度:
require "socket"
function sleep(sec)
    socket.select(nil, nil, sec)
sleep(0.2)
其实在 Unix 中, C 代码中利用select调用来实现比秒更高精度的sleep功能也很常见, 因为这种代码具有高可移植性。