Regan Heath wrote: > That just leaves the deadlock you get when you say: > > synchronize(a) { synchronize(b) { .. } } > > and in another thread: > > synchronize(b) { synchronize(a) { .. } } > what D need is a: synchronize(a, b) // gets lock on a and b but not until it can get both Now what about where the lock are in different functions.... :b