From: Elias Fleckenstein Date: Fri, 6 Aug 2021 18:21:58 +0000 (+0200) Subject: Safe interval implementation X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=48ab864d43381d677e8de18501022088c571c9a8;p=lua_async.git Safe interval implementation --- 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