Tomek Sowiñski Wrote: > This is a continuation of a recent thread "Synchronized const methods" on > D.learn. > > Currently only one thread at a time can execute a synchronized method. But > think about D's const -- it's deep, so if a method is const, it can't > possibly mutate its object. So many synchronized const method calls could > safely look-but-not-touch the same object at the same time.
It's an interesting idea but I'd recommend against it for a few reasons: 1. Acquiring, using, and releasing a reader lock is actually more expensive than a plain old mutex so it isn't a good idea to use one just because you can. A ReadWriteMutex is really for addressing convoying problems on containers. 2. The typical implementation of a ReadWriteMutex doesn't permit recursive up/downgrades from reader to writer and such. It's technically possible to do this, but doing so requires a lot more machinery and consequently trades away even more performance. That said, if you're inclined to experiment there's a ReadWriteMutex in core.sync.rwmutex (which you already may know).