On 2010-10-30 20:49:38 -0400, Andrei Alexandrescu <[email protected]> said:

On 10/30/10 2:24 CDT, Don wrote:
At the moment, I think it's impossible.
Has anyone succesfully implemented refcounting in D? As long as bug 3516
(Destructor not called on temporaries) remains open, it doesn't seem to
be possible.
Is that the only blocker, or are there others?

I managed to define and use RefCounted in Phobos. File also uses hand-made reference counting. I think RefCounted is a pretty good abstraction (unless it hits the bug you mentioned.)

I like the idea of RefCounted as a way to automatically make things reference counted.

But like File and many similar ref-counted structs, it has this race condition (bug 4624) when stored inside the GC heap. Currently, most of Phobos's ref-counted structs are race-free only when they reside on the stack or if your program has only one thread (because the GC doesn't spawn threads if I'm correct).

It's a little sad that the language doesn't prevent races in destructors (bug 4621).

--
Michel Fortin
[email protected]
http://michelf.com/

Reply via email to