Lua C - 有没有办法在C中保留一个值,但仍然不会被垃圾回收?

我正在Lua C中创建一个线程,但我希望将其仅保留在C中,而不将其作为环境/等变量。但是,当我丢弃lua_newthread推送的线程值时,它会很快被垃圾回收,因此变得无用。 在此线程中,我希望运行用户传递的任意Lua代码,允许他们使用与其他线程隔离的独有函数/变量。

有没有办法将线程/用户数据/表值标记为非垃圾回收?

点赞
用户8621712
用户8621712

不,您必须将其引用到某个地方或禁用 GC。

使用 lua_ref 将其引用到一个很少出现的地方:注册表 (debug.getregistry())。

2021-03-25 20:43:54
用户10878972
用户10878972

这是可能的。 您可以在gc_markroots中将gc_mark的调用作为TValue的gcobj参数添加。

2021-04-30 20:22:55