On Wed, 30 May 2012 01:10:41 +0200, Andrei Alexandrescu
<seewebsiteforem...@erdani.org> 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.
They're not really global, it's one per synchronized block.
https://github.com/D-Programming-Language/druntime/blob/master/src/rt/critical_.d
They're actually pretty limited/safe because you can't access/compose the
underlying lock.
import std.stdio, core.thread;
void foo()
{
synchronized
{
auto t = new Thread(&bar);
t.start();
t.join();
writeln("foo");
}
}
void bar()
{
synchronized writeln("bar");
}
void main()
{
foo();
}