[Proposal] Weak reference implementation for D

Sönke Ludwig sludwig at outerproduct.org
Sun Oct 13 01:55:28 PDT 2013


Am 13.10.2013 09:47, schrieb Denis Shelomovskij:
> --- Proposal ---
>
> The proposal is to add weak reference functionality based on
> `unstd.memory.weakref`. It can be placed e.g. in `core.memory`.
>
> Source code:
> https://bitbucket.org/denis-sh/unstandard/src/HEAD/unstd/memory/weakref.d
> Documentation:
> http://denis-sh.bitbucket.org/unstandard/unstd.memory.weakref.html
> Enhancement request: http://d.puremagic.com/issues/show_bug.cgi?id=4151

+1

Bikeshed: I'd use "lock()" instead of "@property target()" based on 
precedence in the form of C++'s weak_ptr, but in general that should be 
a very valuable (and long overdue) addition.

Just to reassure, the following race-condition doesn't exist, right? It 
looks like "GC.addRoot()" makes guarantees by taking the GC lock or 
something similar?

          time ->
thread1: GC collection |               | run finalizer |
thread2: paused        | lock weak ref |               | access object



More information about the Digitalmars-d mailing list