Get a Reference to an Object's Monitor
Andrew Wiley
wiley.andrew.j at gmail.com
Tue Dec 20 14:20:31 PST 2011
Is there any way to get a reference to an object's monitor? This would
be very useful because a Condition has to be tied to a Mutex, and
since objects already have a reference to a Mutex built in, it doesn't
make much sense to create another (and add another reference to the
class) when the end effect is the same.
Example:
---
class Example {
private:
Mutex _lock;
Condition _condition;
public
this() {
_lock = new Mutex();
_condition = new Condition(_lock);
}
void methodA() shared {
synchronized(_lock) {
// do some stuff
while(someTest)
_condition.wait();
}
}
void methodB() shared {
synchronized(_lock) {
//do some stuff
_condition.notifyAll();
}
}
}
---
If I could get a reference to Example's monitor, this example becomes:
---
synchronized class Example {
private:
Condition _condition;
public
this() {
_condition = new Condition(this.__monitor);
}
void methodA() {
// do some stuff
while(someTest)
_condition.wait();
}
void methodB() {
//do some stuff
_condition.notifyAll();
}
}
---
Which is much more fool-proof to write.
More information about the Digitalmars-d
mailing list