Làm thế nào xấu là nó trong Lua 5.1 để không bao giờ để cho một coroutine đúng kết thúc? Nói cách khác, nếu sản lượng coroutine nhưng tôi không bao giờ tiếp tục nó, nó có để lại rất nhiều trạng thái nằm xung quanh cho đến khi chương trình hoàn thành?Hủy bỏ coroutines
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
Tùy thuộc vào some_condition trong giả trên, coroutine có thể không bao giờ được nối lại, và do đó có thể không bao giờ đúng "kết thúc".
Tôi có thể thực hiện việc này với hàng tá coroutines mà không phải lo lắng không? Có an toàn không để lại các coroutines trong trạng thái này? Nó có đắt không?
Tôi không biết Lua ở tất cả, nhưng nếu tôi đang ở trong đôi giày của bạn, tôi sẽ muốn biết càng lớn câu hỏi: làm thế nào bạn có thể xác định xem bạn đang rò rỉ bộ nhớ (hoặc bất cứ điều gì bạn quan tâm khi bạn nói "đắt tiền")? Ví dụ, nếu có một công cụ, bạn có thể tự mình trả lời câu hỏi. –
Điều đó sẽ làm việc để đánh giá yếu tố tiêu thụ bộ nhớ, nhưng tôi cũng tự hỏi liệu nó có an toàn hay không. I E. liệu nó có tạo ra các vấn đề không lường trước được không? – proFromDover