[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index]
[Thread Index]
- Subject: Re: newproxy()
- From: steve donovan <steve.j.donovan@...>
- Date: Sat, 16 Jan 2010 09:43:11 +0200
On Sat, Nov 21, 2009 at 1:19 PM, Florian Weimer <fw@deneb.enyo.de> wrote:
>> Is there any tangible notion of what is to become of newproxy() ?
> __gc is called asynchronously at rather unpredictable points in the
> program. A C extension writer can take that into account (and can
> actually do some useful work without invoking the garbage collector),
> but it's more difficult to do this in Lua code.
Having also found newproxy() useful for finalization of Lua objects, I
wonder why this is such a show-stopper. We all know that __gc happens
in its own sweet time. But for Lua objects, __gc is an opportunity to
ensure that some resource is released, eventually.
Is the issue that a __gc implemented in Lua can happen outside normal
program flow and mess with the state, hence the need for a queue?
A related question: what is the status of 'deterministic
finalization'? I'm thinking of something akin to C#'s 'using'
statement. There is an opportunity with in..do..end to implement
block-exit hooks. If it could be done with little overhead, this
could be most useful, and would not happen asynchonously.
steve d.