Steven Schveighoffer Wrote: > On Wed, 14 Jul 2010 23:22:20 -0400, Heywood Floyd <soul...@gmail.com> > wrote: > > > Hi! > > > > Breakfast toast: Is there any chance a) and b) below are identical in > > what they do? > > > > > > auto mutex = new Mutex(); > > auto cond = new Condition(mutex); > > > > // a) > > synchronized(mutex){ > > cond.wait(); > > } > > > > // b) > > mutex.lock(); > > cond.wait(); > > mutex.unlock(); > > Almost, this is more equivalent: > > { > mutex.lock(); > scope(exit) mutex.unlock(); > cond.wait(); > } > > But yes, the mutex object implements the monitor interface, and replaces > its own monitor object with a pointer to itself. > > For something really nifty, you can tell mutex to be the monitor object of > *any* other object :) Unfortunately, I can't point you at the docs, cause > they dont exist yet, but this will do it: > > class C{} > > auto c = new C; > auto m = new Mutex(c); // now synchronizing on c is the same as locking m > > -Steve
Cool, love it! Thanks! /HF