synchronized (this[.classinfo]) in druntime and phobos
Steven Schveighoffer
schveiguy at yahoo.com
Thu May 31 04:14:04 PDT 2012
On Wed, 30 May 2012 17:42:47 -0400, José Armando García Sancio
<jsancio at gmail.com> wrote:
> On Wed, May 30, 2012 at 5:30 PM, Steven Schveighoffer
> <schveiguy at yahoo.com> wrote:
>> All deadlocks involving A and B mutexes. Or if not, can you show how?
>> I
>> can't see it.
>>
>> -Steve
>
> This can cause a deadlock because locking order is not guaranteed, no?
>
> synchronized class A {
> void delegate(B b) { b.call() }
> void call() {}
> }
>
> synchronized class B {
> void delegate(A a) { a.call() }
> void call() {}
> }
>
> Thanks,
> -Jose
> PS. This may not compile not sure if it should be 'void
> delegate(shared B b)', etc.
A and B are not modifiable. Given the implementation of A and B that I
gave, how can you achieve deadlock?
The big problem I see with allowing anyone to synchronize on A and B is
that one cannot achieve the property of "not possible to use me in a
deadlock."
-Steve
More information about the Digitalmars-d
mailing list