Atomic Ref Counting
Andrei Alexandrescu
SeeWebsiteForEmail at erdani.org
Sun Nov 21 21:31:05 PST 2010
On 11/21/10 7:59 PM, dsimcha wrote:
[snip]
> Atomic: 258 milliseconds total (258 nanoseconds per iteration)
> Non-atomic: 88 milliseconds (88 nanoseconds per iteration)
>
> I think this is a small enough overhead that we should just make all reference
> counting atomic. This would make the race condition pointed out by Michael
> Fortin completely moot IIUC. It would also make it possible to safely share
> reference counted containers across threads in shared/synchronized wrappers, etc.
Thanks for taking the time to build a credibla baseline. A lot of this
depends on the perspective. We're looking at a 2.9x slowdown after all.
After discussing this with Walter, our conclusion was that we need to
solve the problem of calling destructors from a different thread in
general, not only for reference counting. The fact that you could have
arbitrary race conditions in destructors definitely is a problem, one
that needs a solution.
We currently think the solution should be that the GC guarantees
destructor calls in the same thread as the constructor.
Andrei
More information about the Digitalmars-d
mailing list