Blitz Lua Keeper

lua-users home
wiki

本页简要介绍了 BlitzLua 的“Keeper”机制,该机制由 BlitzLua 提供,允许对(纯)Lua 对象进行显式终结。

简介

BlitzLua 是一个用 BlitzMAX 编写的 Lua 运行时环境,BlitzMAX 是一款快速跨平台 BASIC 编译器和运行时系统,适用于 Windows 98/ME/2000/XP、MacOS X 和 Linux。BlitzMAX 对象作为“轻量级用户数据”传递给 Lua,并使用函数(以底层对象作为其第一个参数)而不是“方法”进行操作。一个额外的层(在底层的“函数接口”之上)直接将任何 BlitzMAX 对象映射到相应的 Lua 表。通过“keeper”,这样的表可以在即将被 Lua 垃圾收集器移除时执行最终的“清理”操作(例如显式删除关联的 BlitzMAX 对象)。

工作原理

“Keeper”实现了一种机制,该机制在 [Lua FaQ] 中被描述为对“为什么 __gc 元方法不适用于表?”这个问题的答案。

LuaTable 和“keeper”现在相互引用 - 并且 Lua 中不应该存在对“keeper”的其他引用。一旦 LuaTable 不再被除其“keeper”之外的其他对象引用,Lua 垃圾收集器就开始收集这两个对象

析构函数现在可以执行清理 LuaTable 及其关联的 BlitzMAX 对象所需的任何操作。一旦析构函数完成(或失败),这两个对象将被 Lua 垃圾收集器移除。

参考

--AndreasRozek


最近更改 · 偏好设置
编辑 · 历史记录
最后编辑于 2007 年 5 月 5 日下午 10:13 GMT (差异)