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

时间:2014-10-13 18:59:27

标签: c lua

来自Lua 5.2 Reference Manual

int lua_resume (lua_State *L, lua_State *from, int nargs);
     

[...]

     

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

但这对我来说并不多。它到底是做什么用的?在什么情况下我必须传递除NULL以外的任何东西?

1 个答案:

答案 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);