【发布时间】:2021-09-24 12:48:56
【问题描述】:
如何使用lua c api创建lua协程并暴露给lua?
我正在为 lua 编写一个 c 库,我想知道如何使用 lua c api 实现 lua 协程。我基本上想实现类似以下的东西,其中模块是用 c 编程语言编写的。
module = require("mymodule")
coroutine.resume(module.coroutine_function, ...)
【问题讨论】:
-
在 C 中,您使用
lua_newthread创建一个新线程,然后恢复其中的任何函数。请参阅 Lua 源代码中的 lcorolib.c。 -
@lhf 我已经通过lcorolib.c,但我仍然有一些问题。我的协程函数看起来像这样 ``` int coroutine(lua_State* L) { lua_pushfstring(L, "Wonderfull");返回 lua_yield(L, 1); }``` 并且多次恢复函数不会返回字符串“wonderfull”。我希望协程继续产生字符串“Wonderfull”。像这样的东西``` function iter() while true do coroutine.yield("Wonderfull") end end```