¿Qué tan malo es en Lua 5.1 para nunca dejar que una coroutine termine correctamente? En otras palabras, si una corutina cede, pero nunca la reanudo, ¿deja un montón de estado hasta la finalización del programa?Abandonar corutinas
cor=coroutine.wrap(somefunc)
while true do
done=cor()
if done then -- coroutine exited with "return true"
break
else -- coroutine yielded with "coroutine.yield(false)"
if some_condition then break end
end
end
function somefunc()
-- do something
coroutine.yield(false)
-- do some more
return true
end
Dependiendo de some_condition en el pseudocódigo anterior, la co-rutina nunca podría reanudarse, y por lo tanto nunca podría adecuadamente "fin".
¿Podría hacer esto en docenas de coroutines sin tener que preocuparme? ¿Es seguro dejar corroutines en este estado? ¿Es caro?
No sé Lua en absoluto, pero si yo estuviera en tu lugar, yo quiero saber cuanto más grande pregunta: ¿cómo puede determinar si está perdiendo memoria (o lo que le interesa cuando dice "caro")? Si hay una herramienta, por ejemplo, entonces usted mismo puede responder la pregunta empíricamente. –
Eso funcionaría para evaluar el elemento de consumo de memoria, pero también me preguntaba si era seguro. Es decir. ¿Creará problemas posteriores imprevistos? – proFromDover