synchronized { }

Sean Kelly sean at invisibleduck.org
Sun Jul 27 11:43:46 PDT 2008


== Quote from Sean Kelly (sean at invisibleduck.org)'s article
> == Quote from torhu (no at spam.invalid)'s article
> > Sean Kelly wrote:
> > > == Quote from Graham St Jack (graham.stjack at internode.on.net)'s article
> > >> On Thu, 26 Jun 2008 08:15:24 -0400, Michel Fortin wrote:
> > >> > On 2008-06-25 21:18:41 -0400, Walter Bright <newshound1 at digitalmars.com>
> > >> > said:
> > >> >
> > >> >> Right now, if you use a synchronized statement with no argument, it
> > >> >> will sync on a mutex unique to that statement.
> > >> >>
> > >> >> Does anyone write threading code that depends on this behavior?
> > >> >
> > >> > I've used it before, thinking it was equivalent to synchronize(this) {},
> > >> > an incorrect assumption obviously. If you get rid of it, I won't miss
> > >> > it.
> > >> Same.
> > >
> > > Um, it /is/ equivalent to synchronized(this).  What made you think differently?
> > >
> > Don't the docs say that they're not equivalent?
> > http://www.digitalmars.com/d/2.0/statement.html#SynchronizedStatement
> > I thought they were the same too, before Walter checked in something to
> > phobos that made me think otherwise.  Can't remember what exactly.
> They're identical, unless something changed recently in D 2.0.  Walter confirmed
> this explicitly for me a while back, though I don't have a link handy.

I was finally inspired to track down the reference for this statement:

http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.bugs&artnum=5268
http://www.digitalmars.com/pnews/read.php?server=news.digitalmars.com&group=digitalmars.D.bugs&artnum=5276

The second post from Walter is a reply to my post in the first link.  Given
this, I can only assume that Walter either misunderstood me or that the behavior
was changed silently at some point--I'm pretty sure the latter since I tested
this way back when.  In any case, the current behavior is as Walter described,
and I consider it utterly broken.  Not only is it inconsistent with Java, which
is what I believe this design was based on, but it's completely useless in the
general case.  It has to change, but I really wish that the behavior could be
fixed in D 1.0 as well.  Not likely I know, but oh well.


Sean



More information about the Digitalmars-d mailing list