On 5/30/12 9:23 AM, Alex Rønne Petersen wrote:
On 30-05-2012 18:14, Andrei Alexandrescu wrote:
This is news to me. How do you publicly access the mutex of a
synchronized class object?
Generally in two ways:
1) synchronized (obj)
This is not accessing the mutex for arbitrary operations.
2) obj.__monitor
All symbols starting with two underscores are reserved by the
implementation.
(1) accesses it in order to actually do locking, but if obj is an
instantiation of a class that uses the this reference internally for
locking, you end up with potential deadlocks.
Deadlocks are endemic to mutex-based programming and are not avoided
inherently or preferentially by the alternative you discussed (exposing
unrestricted mutex).
Therefore, you can say
that obj's mutex is exposed.
Nothing could stop one, but that claim is incorrect.
Andrei