Si no se necesita una precisión milisegundo, usted podría ir a por una solución corrutina, que reanudar periódicamente, al igual que al final de su ciclo principal, así:
require 'socket' -- for having a sleep function (could also use os.execute(sleep 10))
timer = function (time)
local init = os.time()
local diff=os.difftime(os.time(),init)
while diff<time do
coroutine.yield(diff)
diff=os.difftime(os.time(),init)
end
print('Timer timed out at '..time..' seconds!')
end
co=coroutine.create(timer)
coroutine.resume(co,30) -- timer starts here!
while coroutine.status(co)~="dead" do
print("time passed",select(2,coroutine.resume(co)))
print('',coroutine.status(co))
socket.sleep(5)
end
Este utiliza la función dormir en LuaSocket, se puede usar cualquier otra de las alternativas sugeridas en el Lua-users Wiki
¿Podría darme un ejemplo de cómo usar la alarma de una manera simple para llamar a una función cada minuto? – Goles
¿Miraste el código? Hay un archivo "test.lua" en el archivo lalarm. –
Sí, gracias, creo que tengo el ejemplo ahora. – Goles