Quanto è grave in Lua 5.1 non lasciare mai terminare correttamente una coroutine? In altre parole, se coroutine cede ma non lo riprendo mai, lascia un sacco di stato in giro fino al completamento del programma?Abbandonare le coroutine
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
seconda some_condition in pseudocodice sopra, la coroutine potrebbe non essere ripreso, e quindi potrebbe non propriamente "fine".
Posso fare questo a dozzine di coroutine senza dovermi preoccupare? È sicuro lasciare le coroutine in questo stato? È costoso?
Non so Lua a tutti, ma se fossi nei tuoi panni, vorrei sapere il più grande domanda: come puoi determinare se stai perdendo memoria (o qualunque cosa ti interessi quando dici "costoso")? Se c'è uno strumento, per esempio, allora puoi rispondere empiricamente alla domanda da solo. –
Questo avrebbe funzionato per valutare l'elemento di consumo della memoria, ma mi stavo chiedendo anche se fosse sicuro. Cioè creerebbe problemi imprevisti in seguito? – proFromDover