From: Elias Fleckenstein Date: Fri, 6 Aug 2021 18:25:35 +0000 (+0200) Subject: Safe immediate implementation X-Git-Url: https://git.lizzy.rs/?a=commitdiff_plain;h=fe5c1a3ef2617b64353fb50ec1a579463323f7c2;p=lua_async.git Safe immediate implementation --- diff --git a/immediates.lua b/immediates.lua index 6e06372..8913ddc 100644 --- a/immediates.lua +++ b/immediates.lua @@ -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