- local function set(self, key, value)
- local c = coroutine.running()
- local thread = coxpt[c] or c or 0
- if not rawget(self, thread) then
- rawset(self, thread, {})
+ __index = function(self, key)
+ local t = rawget(self, coxpt[coroutine.running()]
+ or coroutine.running() or 0)
+ return t and t[key]
+ end,
+
+ __newindex = function(self, key, value)
+ local c = coxpt[coroutine.running()] or coroutine.running() or 0
+ if not rawget(self, c) then
+ rawset(self, c, { [key] = value })
+ else
+ rawget(self, c)[key] = value