Something needs to happen with shared, and soon.

deadalnix deadalnix at gmail.com
Wed Nov 14 05:19:11 PST 2012


Le 14/11/2012 13:23, David Nadlinger a écrit :
> On Wednesday, 14 November 2012 at 00:04:56 UTC, deadalnix wrote:
>> That is what java's volatile do. It have several uses cases, including
>> valid double check locking (It has to be noted that this idiom is used
>> incorrectly in druntime ATM, which proves both its usefullness and
>> that it require language support) and disruptor which I wanted to
>> implement for message passing in D but couldn't because of lack of
>> support at the time.
>
> What stops you from using core.atomic.{atomicLoad, atomicStore}? I don't
> know whether there might be a weird spec loophole which could
> theoretically lead to them being undefined behavior, but I'm sure that
> they are guaranteed to produce the right code on all relevant compilers.
> You can even specify the memory order semantics if you know what you are
> doing (although this used to trigger a template resolution bug in the
> frontend, no idea if it works now).
>
> David

It is a solution now (it wasn't at the time).

The main drawback with that solution is that the compiler can't optimize 
thread local read/write regardless of shared read/write. This is wasted 
opportunity.


More information about the Digitalmars-d mailing list