aboutsummaryrefslogtreecommitdiff
path: root/intervals.lua
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2021-08-06 20:21:58 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2021-08-06 20:21:58 +0200
commit48ab864d43381d677e8de18501022088c571c9a8 (patch)
treefe1d85b2dda65f09d4b36ece3611847d8bd88d1a /intervals.lua
parent03945d096e8d68ee3e979e1fa6491935d6284a4e (diff)
downloadlua_async-48ab864d43381d677e8de18501022088c571c9a8.tar.xz
Safe interval implementation
Diffstat (limited to 'intervals.lua')
-rw-r--r--intervals.lua6
1 files changed, 5 insertions, 1 deletions
diff --git a/intervals.lua b/intervals.lua
index 72a0cc7..025454d 100644
--- a/intervals.lua
+++ b/intervals.lua
@@ -1,5 +1,6 @@
lua_async.intervals = {
pool = {},
+ executing = {},
last_id = 0,
}
@@ -18,10 +19,13 @@ end
function clearInterval(id)
lua_async.intervals.pool[id] = nil
+ lua_async.intervals.executing[id] = nil
end
function lua_async.intervals.step(dtime)
- for id, interval in pairs(lua_async.intervals.pool) do
+ lua_async.intervals.executing = table.copy(lua_async.intervals.pool)
+
+ for id, interval in pairs(lua_async.intervals.executing) do
interval.time_left = timeout.time_left - dtime
if interval.time_left <= 0 then