`lua_resume` 的 `from` 参数的含义

ybu*_*ill 5 c lua

Lua 5.2 参考手册

int lua_resume (lua_State *L, lua_State *from, int nargs);
Run Code Online (Sandbox Code Playgroud)

[...]

该参数from表示正在恢复的协程L。如果没有这样的协程,这个参数可以是NULL

但这对我来说并不多。它究竟有什么作用?在什么情况下我必须传递除 NULL 以外的任何内容?

Eta*_*ner 4

仅从5.2 的源代码来看,它似乎from仅用于正确计算恢复期间嵌套 C 调用的数量。

L->nCcalls = (from) ? from->nCcalls + 1 : 1;
Run Code Online (Sandbox Code Playgroud)

lua_assert(L->nCcalls == ((from) ? from->nCcalls : 0));
Run Code Online (Sandbox Code Playgroud)

的实现coroutine.resume似乎就是这样使用的。

它使用正在恢复协程线程from的主线程的值来恢复协程线程上的协程。

status = lua_resume(co, L, narg);
Run Code Online (Sandbox Code Playgroud)