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();
}

Reply via email to