Насколько плохо в 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 в псевдокоде выше, сопрограмма может никогда не возобновиться и, таким образом, никогда не может должным образом "конец".
Могу ли я сделать это с десятками сопрограмм, не беспокоясь? Безопасно ли оставлять сопрограммы в этом состоянии? Это дорого?