aboutsummaryrefslogtreecommitdiff
path: root/immediates.lua
diff options
context:
space:
mode:
authorElias Fleckenstein <eliasfleckenstein@web.de>2021-08-06 20:25:35 +0200
committerElias Fleckenstein <eliasfleckenstein@web.de>2021-08-06 20:25:35 +0200
commitfe5c1a3ef2617b64353fb50ec1a579463323f7c2 (patch)
tree0f45192f6247cb12741747d7e1442c7e027e70c0 /immediates.lua
parent48ab864d43381d677e8de18501022088c571c9a8 (diff)
downloadlua_async-fe5c1a3ef2617b64353fb50ec1a579463323f7c2.tar.xz
Safe immediate implementation
Diffstat (limited to 'immediates.lua')
-rw-r--r--immediates.lua8
1 files changed, 6 insertions, 2 deletions
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