Signification du paramètre `from` de` lua_resume`

De Lua 5.2 Reference Manual :

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

[…]

Le paramètre from représente la coroutine qui reprend L Si aucune coroutine de ce type n’existe, ce paramètre peut être NULL .

Mais ça ne me dit pas grand chose. Qu’est-ce que cela fait exactement? Dans quelles circonstances dois- je passer autre chose que NULL?

À en juger par le code source de la version 5.2, il semblerait que from n’est utilisé que pour compter correctement le nombre d’appels C nesteds au cours de la reprise.

 L->nCcalls = (from) ? from->nCcalls + 1 : 1; 

et

 lua_assert(L->nCcalls == ((from) ? from->nCcalls : 0)); 

L’implémentation de coroutine.resume semble l’utiliser de cette façon.

Il reprend la coroutine sur le thread de coroutine avec une valeur de début du thread principal qui le reprend.

 status = lua_resume(co, L, narg);