【问题标题】:Evaluating Lua for bare metal project为裸机项目评估 Lua
【发布时间】:2020-08-13 01:45:55
【问题描述】:

我正在为一个裸机项目评估 Lua(其中大部分已经在运行),它看起来正是我们需要的。

我需要将它放入我的代码中,并且能够调用 Lua 而不需要挂在那里。我需要反复调用 Lua,就像它是一个状态机一样,并且每次我调用它时让它返回一个状态以说“继续打电话给我,我还没完成”,“停止,我有一个错误”或“停止,没有错误,脚本已完成”。

我已经看到允许从 Lua 回调到 c 的钩子,用于评估的字节码的每一行或字节,但我不能使用回调。

是否存在 Lua 的状态机实现?

【问题讨论】:

    标签: c lua coroutine state-machine


    【解决方案1】:

    您正在寻找使用coroutineslua_resume C 函数。从其文档中:

    lua_resume 在协程产生时返回 LUA_YIELD,如果协程完成执行没有错误则返回 0,或者在出错时返回错误代码(参见 lua_pcall)。

    这听起来就像你所描述的那样。

    【讨论】:

    • lua_resume() 是一个阻塞调用:This call returns when the coroutine suspends or finishes its execution。 OP 希望在单独的 OS 线程中运行 Lua 并轮询其状态。或者他想以调试方式运行 Lua:如果他的系统是单线程的,则逐步运行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-10
    • 1970-01-01
    • 2019-01-23
    • 2019-03-16
    • 2020-11-24
    • 1970-01-01
    • 2015-11-16
    相关资源
    最近更新 更多