RFC: naming for FrontTransversal and Transversal ranges
Denis Koroskin
2korden at gmail.com
Sat May 2 07:17:16 PDT 2009
On Sat, 02 May 2009 18:08:30 +0400, Andrei Alexandrescu <SeeWebsiteForEmail at erdani.org> wrote:
> Robert Jacques wrote:
>> On Sat, 02 May 2009 03:35:51 -0400, Andrei Alexandrescu
>> <SeeWebsiteForEmail at erdani.org> wrote:
>>
>>> Robert Jacques wrote:
>>>>> No, repeated allocations are trivial to eliminate. I didn't even
>>>>> bother to explain that in the article. The loop must only refill the
>>>>> allocated object from the object that needs to be replaced.
>>>> putting the test in the pseudo code for this would've help my
>>>> understanding.
>>>> if(copy is null)
>>>> copy = s.deepDup;
>>>> else
>>>> s.deepDupTo(copy);
>>>
>>> copy = cast(T*) GC.malloc(T.sizeof);
>>> do {
>>> overwrite(s, copy);
>>> copy.modify;
>>> } while (!cas(copy, s));
>> I'm confused. The article talks about copying the entire data
>> structure, not just a node/etc. And trees, etc tend to have variable
>> sizes, etc.
>
> You can reuse memory even if it comprehends more complex patterns than
> one single allocation.
>
> Andrei
I *highly* doubt it is worth the trouble. Most likely, this container won't be lock-free and scalable anymore. Performance will also degrade dramatically.
Besides, the more I think about thread-local/shared separation that is going to come to D2, the more I see that there is absolutely no need to make Phobos containers thread-safe. Most containers will be thread-local and won't need any synchronization at all.
More information about the Digitalmars-d
mailing list