Making RCSlice and DIP74 work with const and immutable
via Digitalmars-d
digitalmars-d at puremagic.com
Sun Mar 1 09:25:30 PST 2015
On Sunday, 1 March 2015 at 17:03:46 UTC, ketmar wrote:
> On Sun, 01 Mar 2015 15:53:06 +0000, Marc Schütz wrote:
>
>>> However, AFAICS, it comes with a serious problem. Immutable
>>> objects are
>>> freely passable between threads, so surely an immutable RC
>>> object would
>>> need atomic counting just like a shared RC object, but unlike
>>> shared,
>>> immutable does not necessarily express the intent of sharing
>>> between
>>> threads; the immutable RC object could easily be counting
>>> atomically
>>> for nothing.
>>
>> Argh! I didn't think about this. Any chance we can deprecate
>> this
>> behaviour? It's also an obstacle for the implementation of
>> thread-local
>> heaps.
>
> but deprecating this is... illogical at best. immutable objects
> are
> immutable, so why can't i pass 'em to any thread? do you mean
> that i
> can't use `immutable string = "mystr";` in different threads
> without
> copying anymore?
Don't know. It was more of a question than a recommendation. It
might be impractical.
OTOH, I don't think it's illogical, because thread-locality and
immutability are independent concepts. There can be shared
mutable data (`shared`) as well as thread-local immutable data.
Hmm... that would be equivalent to `const`, no? But that's
getting off-topic.
More information about the Digitalmars-d
mailing list