lua 巧用weak table

对于lua中的weak table,一切花式用法,都基于以下两个特点:

1. lua的GC是基于引用计数的,而弱引用不增加计数,GC时如果只有弱引用,可以GC

2. lua的weak table, (__mode , k, v, kv),可以是key,value,kv

用途:

这样,就可以处理一些缓存性功能时,既关联了table对象,又不影响它的GC,可以很好的剥离它们的直接关系

local obj = {}
setmetatable(obj, {__mode = "k"})
local statePool = {}
statePool[obj] = "busy"
--obj delete
obj = nil
collectgarbage()
print(statePool[obj] or "obj has been deleted!")

posted on 2020-08-30 22:32  胖福  阅读(182)  评论(0编辑  收藏  举报

导航