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

index 6e0637283b6149927024a92587381f51b8b7b76c..8913ddc05beefd01f3adc7f78829598fa457298b 100644 (file)
@@ -1,5 +1,6 @@
 lua_async.immediates = {
        pool = {},
+       executing = {},
        last_id = 0,
 }
 
@@ -15,12 +16,15 @@ end
 
 function clearImmediate(id)
        lua_async.immediates.pool[id] = nil
+       lua_async.immediates.executing[id] = nil
 end
 
 function lua_async.immediates.step(dtime)
-       for id, immediate in pairs(lua_async.immediates.pool) do
+       lua_async.immediates.executing = lua_async.immediates.pool
+       lua_async.immediates.pool = {}
+
+       for id, immediate in pairs(lua_async.immediates.executing) do
                immediate.callback(unpack(immediate.args))
-               clearImmediate(id)
        end
 end