synchronized (this[.classinfo]) in druntime and phobos

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Tue May 29 16:22:51 PDT 2012


On 5/29/12 4:17 PM, Alex Rønne Petersen wrote:
> On 30-05-2012 01:10, Andrei Alexandrescu wrote:
>> On 5/29/12 4:06 PM, Alex Rønne Petersen wrote:
>>> Synchronized blocks are good because they
>>> operate on an implicit, hidden, global mutex. You can't screw up with
>>> that.
>>
>> I think there's quite some disconnect here. If there's any anti-pattern
>> in this discussion, it's operating on an implicit, hidden, global mutex.
>> Walter agreed to eliminate that from D, but never got around to it.
>>
>> Andrei
>
> I'd love to hear why you think this design is problematic as opposed to
> one that lets users accidentally expose synchronization issues to
> consumers of their API surface, which is what many people end up doing
> since synchronized (this) or even synchronized (this.classinfo) are
> allowed at all.
>
> (I've seen countless cases of those two horrible abuses of synchronized
> especially from people asking questions on e.g. IRC.)

I think the most egregious example is synchronization by global lock 
done in Python and other languages. It has very nice semantics (stop the 
world, do something, resume the world), but scales poorly enough to be 
universally considered a failure. Quite honest I'm shocked that you're 
advocating it.

Andrei




More information about the Digitalmars-d mailing list