在Lua 5.1中有多糟?永遠不要讓協程正常結束?換句話說,如果一個協程產生,但我從不恢復它,它是否會留下很多狀態,直到程序完成?放棄協程
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
根據上面的僞some_condition,協程可能永遠不會恢復,因而可能永遠正確「結束」。
我可以這樣做幾十個協程而不必擔心嗎?在這種狀態下保留協程是否安全?這個很貴嗎?
我不知道Lua中所有,但如果我是你的話,我想知道更大問題:你如何確定你是否在泄漏記憶(或者當你說「昂貴」時感興趣的任何內容)?例如,如果有一個工具,那麼你可以自己回答這個問題。 – 2010-09-04 15:19:27
這將用於評估內存消耗元素,但我也想知道它是否安全。即它會造成後來無法預料的問題嗎? – proFromDover 2010-09-05 03:09:13