int lua_resume (lua_State *L, lua_State *from, int nargs);
[...]
参数
from
表示正在恢复L
的协同程序。如果没有这样的协程,则此参数可以是NULL
。
但这对我来说并不多。它到底是做什么用的?在什么情况下我必须传递除NULL以外的任何东西?
答案 0 :(得分:3)
除了5.2的source code之外,from
似乎仅用于在恢复期间正确计算嵌套C调用的数量。
L->nCcalls = (from) ? from->nCcalls + 1 : 1;
和
lua_assert(L->nCcalls == ((from) ? from->nCcalls : 0));
coroutine.resume
的实施似乎是这样使用的。
它恢复协程线程上的协同程序,并且正在恢复它的主线程的from
值。
status = lua_resume(co, L, narg);