Wie schlimm ist es in Lua 5.1, niemals eine Coroutine richtig enden zu lassen? Mit anderen Worten, wenn eine Coroutine nachgibt, aber ich sie nie wieder aufnehme, hinterläßt sie eine Menge Zustand bis zum Abschluß des Programms?Aufgeben von Korutinen
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
Je nach some_condition in dem Pseudo-Code oben, könnte der Koroutine nie wieder aufgenommen werden, und damit vielleicht nie richtig „Ende“.
Könnte ich das zu Dutzenden von Korotinen tun, ohne sich Sorgen machen zu müssen? Ist es in diesem Zustand sicher, Coroutines zu verlassen? Ist es teuer?
Ich weiß Lua überhaupt nicht, aber wenn ich an deiner Stelle wäre, würde ich das größere wissen wollen Frage: Wie können Sie feststellen, ob Sie Speicher verlieren (oder was immer Sie interessiert, wenn Sie "teuer" sagen)? Wenn es zum Beispiel ein Werkzeug gibt, können Sie die Frage selbst empirisch beantworten. –
Das würde für die Bewertung des Speicherverbrauchs-Elements funktionieren, aber ich fragte mich auch, ob es sicher war. I.e. würde es später zu unvorhergesehenen Problemen führen? – proFromDover