`lua_resume` 函数中 `from` 参数的含义。

函数lua_resume表示恢复执行协程L,参数from表示恢复L的协程。如果不存在这样的协程,则此参数可以为NULL。但是,这并没有给我提供足够多的信息。它到底是做什么的?在什么情况下我必须传递除了NULL之外的其他参数?

点赞
用户258523
用户258523

根据5.2版本的源代码,似乎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);
2014-10-13 19:08:33