[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: To-be-closed variables and coroutines question
- From: DarkWiiPlayer <darkwiiplayer@...>
- Date: Sun, 10 May 2020 11:31:37 +0200
Wouldn't it make sense to add a `__close` metamethod to coroutines then?
That seems to be exactly the kind of situation this feature is meant to
resolve in the first place.
So far, writing `local co<close> = coroutine.create(print)` just errors
because coroutine objects can't be closed.
On 02/05/2020 23:04, Roberto Ierusalimschy wrote:
>> Are the functions `coroutine.close()` and `lua_resetthread()` provided
>> only to allow to-be-closed variables to be closed immediately (as
>> opposed to when the threads are garbage collected)?
> Yes.
>
>
>> I ask because when looking at the sources, it is not clear to me that
>> those functions are called during garbage collection.
> They are not.
>
>
>> Supposed I declared a to-be-closed variable in a coroutine, yielded
>> the coroutine, but never intended to resume it. Would the to-be-closed
>> variable in the coroutine ever be closed without explicitly calling
>> `coroutine.close()`?
> No. The manual is explicit about that:
>
> If a coroutine yields and is never resumed again, some variables
> may never go out of scope, and therefore they will never be closed.
> (These variables are the ones created inside the coroutine and in
> scope at the point where the coroutine yielded.) Similarly, if a
> coroutine ends with an error, it does not unwind its stack, so it does
> not close any variable. In both cases, you can either use finalizers
> or call @Lid{coroutine.close} to close the variables. However, if
> the coroutine was created through @Lid{coroutine.wrap}, then its
> corresponding function will close the coroutine in case of errors.
>
> -- Roberto
> _______________________________________________
> lua-l mailing list -- lua-l@lists.lua.org
> To unsubscribe send an email to lua-l-leave@lists.lua.org
Attachment:
signature.asc
Description: OpenPGP digital signature
_______________________________________________
lua-l mailing list -- lua-l@lists.lua.org
To unsubscribe send an email to lua-l-leave@lists.lua.org