Synchronized classes have no public members
Jonathan M Davis via Digitalmars-d
digitalmars-d at puremagic.com
Thu Oct 15 07:05:54 PDT 2015
On Thursday, 15 October 2015 at 10:11:06 UTC, Andrei Alexandrescu
wrote:
> On 10/13/15 10:05 PM, Dicebot wrote:
>> On Tuesday, 13 October 2015 at 18:28:23 UTC, Marco Leise wrote:
>>> Guys, sorry to break into your wishful thinking, but
>>>
>>> synchronized(mutex) {}
>>>
>>> already works as you want it to since as long as I can think.
>>> Yes, it
>>> takes a parameter, yes it calls lock/unlock on the mutex. :)
>>
>> Yes, and I am saying that it doesn't justify presence of
>> `synchronized`
>> keyword in the language at all, being historical legacy
>> misfeature.
>
> For a while we were of the opinion that we should let
> "synchronized" and "shared" be and move on with alternative
> features. Now we believe an incomplete language definition is
> damaging the language as a whole so we better make them fully
> defined and useful within their charter.
>
> Lock-based synchronization has plenty of good uses and the
> scope locking defined by "synchronized" covers a large useful
> subset of it. We need to make it usable safely and without
> contortions, and this particular PR is a step along that way.
>
> It's not a huge priority but since Andrej has only done the
> work, the main concern left is breakage of existing code,
> albeit much of that is incorrect or unnecessarily unsafe.
Unless we're going to decide to get rid of synchronized in favor
of just using mutexes and guards/autolocks like you would in C++,
I think that it's pretty clear that this change is an
improvement. And it's what TDPL has said for something like 5
years now. So, in theory, it's publicly been the plan for some
time.
- Jonathan M Davis
More information about the Digitalmars-d
mailing list