shared adventures in the realm of thread-safety.
Robert Jacques
sandford at jhu.edu
Mon Sep 14 08:17:26 PDT 2009
On Mon, 14 Sep 2009 07:44:44 -0400, Jason House
<jason.james.house at gmail.com> wrote:
> Robert Jacques Wrote:
>
>> On Sun, 13 Sep 2009 18:08:57 -0400, Jeremie Pelletier
>> <jeremiep at gmail.com>
>> wrote:
>> .
>>
>> Bartosz took the concept one step further: when declared as shared, all
>> methods are implicitly wrapped in synchronize blocks. He then added a
>> keyword for more manual, lock-free style programming. But this syntactic
>> sugar isn't implemented yet.
>>
>
> That is not the design for D2. shared means shared. It is neither meant
> to mean synchronized nor lockfree. I worry about optimization
> opportunities for shared in D2. There may be way too many memory fences
> in synchronized code. Without a mapping of a monitor to what's protected
> under a monitor, the compiler/optimizer's hands are tied. At best, every
> object will be its own monitor, but that hardly makes any sense...
That is the Java model by the way. And really, no one knows what the
shared design is for D2. The keyword has been added, but it has yet to be
fleshed out. And once you start talking about how to flesh it out and what
kinds of syntactic sugar are wanted/needed you need to start looking at
previous solutions, which is what Bartosz has done in his blog posts. The
specific issue you raise, that of excessive monitors, was addressed using
the concept of unique/mobile objects which are both thread-safe and don't
require locking. However, it appears that this won't make it into D2,
which I feel is a shame.
More information about the Digitalmars-d
mailing list