我如何确定Lua脚本在哪个线程上运行?

我目前正在编写 Lua 脚本,用于与某些第三方产品集成。这个第三方产品同时在几个线程中调用我的 Lua 脚本,这没问题。但是,由于我需要从脚本中写入日志文件,我希望能够识别运行我的 Lua 脚本的线程,并将其写入日志文件。

这样我就可以识别哪些日志条目同属于一个线程。

如果您对如何在 Lua 中正确区分不同线程的日志条目有任何想法,非常欢迎您的建议。

点赞
用户3080396
用户3080396

默认的 tostring() 表示方式包含了表的(内存)地址。这在同一进程的不同 Lua 虚拟机中是保证唯一的。

你可以利用这一点为每个线程生成一个唯一的 ID:

local unique_id = tostring( {} ):sub(8) -- 提取 "address" 部分

print(unique_id)
--> 输出 0x7f876b608b00

值得一提的是,这是生成用于全局 Lua 注册表中唯一键的推荐方法!

2014-06-07 13:38:16