[Proposal] Weak reference implementation for D
Sean Kelly
sean at invisibleduck.org
Thu Oct 17 09:11:56 PDT 2013
On Thursday, 17 October 2013 at 08:09:24 UTC, Martin Nowak wrote:
> On 10/13/2013 09:47 AM, Denis Shelomovskij wrote:
>>
>> * Alex's one from MCI:
>>
>> https://github.com/lycus/mci/blob/f9165c287f92e4ef70674828fbadb33ee3967547/src/mci/core/weak.d
>>
>
> I remember talking about this with Alex.
> He wanted to add some functions to the GC and this is what I
> came up with based on the current implementation.
> It uses the synchronized GC.addrOf to check whether the loaded
> pointer is still valid.
I'm afraid this is insufficient. If a same-sized block is
allocated before the dispose event is triggered, the WeakRef
could end up pointing to something else. It's a rare case (in
the current GC, a finalizer would have to do the allocation), but
possible. This is what I referred to as the ABA problem the
other day. Not strictly accurate, but the effect is similar.
More information about the Digitalmars-d
mailing list