Something needs to happen with shared, and soon.
Jonathan M Davis
jmdavisProg at gmx.com
Thu Nov 15 03:31:45 PST 2012
On Wednesday, November 14, 2012 20:32:35 Andrei Alexandrescu wrote:
> TDPL 13.14 explains that inside synchronized classes, top-level shared
> is automatically lifted.
Then it's doing the casting for you. I suppose that that's an argument that
using synchronized classes when dealing with shared is the way to go (which
IIRC TDPL does argue), but that only applies to classes, and there are plenty
of cases (maybe even the majority) where it's built-in types like arrays or
AAs which people are trying to share, and synchronized classes won't help them
there unless they create wrapper types. And explicit casting will be required
for them. And of course, anyone wanting to use mutexes or synchronized blocks
will have to use explicit casts regardless of what they're protecting, because
it won't be inside a synchronized class. So, while synchronized classes make
dealing with classes nicer, they only handle a very specific portion of what
might be used with shared.
In any case, I clearly need to reread TDPL's threading stuff (and maybe the
whole book). It's been a while since I read it, and I'm getting rusty on the
details.
By the way, speaking of synchronized classes, as I understand it, they're
still broken with regards to TDPL in that synchronized is still used on
functions rather than classes like TDPL describes. So, they aren't currently a
solution regardless of what the language actual design is supposed to be.
Obviously, that should be fixed though.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list