On 29.05.2012 16:26, Alex Rønne Petersen wrote:
On 29-05-2012 14:19, Dmitry Olshansky wrote:
On 29.05.2012 16:07, Regan Heath wrote:

According to the docs here:
http://dlang.org/class.html#synchronized-functions

A synchronized function locks "this" and as "this" is exposed
publicly... In the following code the "lock" statement and "synchronized
void bar" lock the same mutex.

class Foo {
synchronized void bar() { ...statements... }
}

void main()
{
Foo foo = new Foo();
lock(foo)
{
...statements...
}
}

But locking on another class rather than something specifically
intended as a mutex does seem to me like it's asking for trouble.

I'd be darned but every Object in D has monitor fields. If I'm not
mistaken it's the mutex you are looking for ;)



Indeed they do, and therefore each object must eat an entire word of
memory for questionable gain.

Generalized object monitors is the worst idea in programming language
and virtual machine design, ever.


Agreed, awfuly crippled design for a language with Thread-local by default.
Looks like we have 'oh my god, what were they thinking' moment here.
If anything I'd rather re-implement the whole v-table infrastructure via mixins, templates & friends.

--
Dmitry Olshansky

Reply via email to