【问题标题】:Lua c-api: How to identify the coroutine/thread involved in a lua_pushcclosure callback?Lua c-api:如何识别 lua_pushcclosure 回调中涉及的协程/线程?
【发布时间】:2012-09-01 22:08:35
【问题描述】:

有没有办法知道执行 Lua 脚本的线程(协程)是 lua_pushcclosure 调用的来源?

为了管理一些与 lua 线程相关的东西(延迟暂停/恢复或私有线程变量),我需要识别回调中涉及的线程。我知道我可以在使用 lua_gettop 创建线程索引时获取它,但我找不到使用它的方法,因此它有助于在从 Lua 脚本发出 lua_pushcclosure 调用时识别线程。

我当前的系统允许嵌套脚本调用,因此脚本可以执行其他脚本(每个嵌套脚本调用创建一个具有相同 lua_state 的新线程。因此 lua_state 用于获取堆栈中的多个线程条目。)

我正在使用 Lua 5.2

【问题讨论】:

  • "lua_pushcclosure 回调" lua_pushcclosure 不是回调。你是在说什么时候调用那个函数?
  • 是的,我说的是何时从 lua 脚本中调用该函数。通过lua_pushcclosure暴露的函数可以从不同的线程调用,我需要识别是哪一个。

标签: c++ c lua lua-5.2


【解决方案1】:

如果你在一个从 Lua 调用的 C 函数中,并且你想知道你在哪个线程中......只需调用 lua_pushthread(L)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-16
    • 2016-06-24
    • 1970-01-01
    • 2021-12-22
    • 1970-01-01
    • 2020-02-05
    • 2017-02-02
    相关资源
    最近更新 更多