Escaping the Tyranny of the GC: std.rcstring, first blood
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Mon Sep 15 21:49:47 PDT 2014
On 9/15/14, 12:43 PM, po wrote:
>
>> As I understand the issue it works if you make sure to transfer
>> ownership explicitly before the other thread gains access?
>>
>> Maybe this is more clear:
>>
>> http://www.1024cores.net/home/lock-free-algorithms/object-life-time-management/differential-reference-counting
>>
>
> Ah, I think I follow.
>
> So in C++ terms:
> It basically requires either a global shared_ptr, or that you passed
> one around by reference between threads. And that you then killed it in
> one thread at the exact moment the control block was read in another
> thread. That blog post discusses a solution, I wonder if that is
> implemented in C++'s shared_ptr?
No, and it neeedn't. The article is not that good. In C++, if a thread
must increment a reference counter while it's going to zero due to
another thread, that's 100% a programming error, not a concurrency
error. That's a well known and well studied problem. As an aside,
searching the net for differential reference counting yields pretty much
only this article.
Andrei
More information about the Digitalmars-d
mailing list