On Tuesday, 13 October 2015 at 19:05:31 UTC, 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.

The same can be done trivially with a guard/autolock object, because we have RAII. It can also be done with scope statements, though that's more verbose. I suspect that C# has it primarily because they don't have RAII.

I don't know that it really hurts D to have synchronized statements, but I do agree that they really don't add much in the way of value. And it's not like it's hard to come up with cases where they don't even work, whereas a guard/autolock could (e.g. having to unlock the mutex partway through a block, possibly relocking it later in the block, possibly not).

- Jonathan M Davis

Reply via email to