]> git.lizzy.rs Git - lua_async.git/commitdiff
Safe interval implementation
authorElias Fleckenstein <eliasfleckenstein@web.de>
Fri, 6 Aug 2021 18:21:58 +0000 (20:21 +0200)
committerElias Fleckenstein <eliasfleckenstein@web.de>
Fri, 6 Aug 2021 18:21:58 +0000 (20:21 +0200)
intervals.lua

index 72a0cc74135189e58b42e39551c8a9632ccbfa89..025454db2a0f6789561cd67d74a534016b4fa5f3 100644 (file)
@@ -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