Fixed monitorExit to work with more than one enter/exit.

This commit is contained in:
Steve Hannah 2015-02-06 17:07:01 -08:00
parent 2fbc50e76f
commit e2b6b7b2df

View File

@ -51,12 +51,15 @@ public class TObject {
} }
static void monitorExit(TObject o){ static void monitorExit(TObject o){
o.owner = null;
o.monitorCount--; o.monitorCount--;
if ( o.monitorCount == 0 ){
if ( o.monitorLock != null ){ if ( o.monitorLock != null ){
o.owner = null;
o.monitorLock.notifyAll(); o.monitorLock.notifyAll();
} }
} }
}
static boolean holdsLock(TObject o){ static boolean holdsLock(TObject o){
return o.owner == TThread.currentThread(); return o.owner == TThread.currentThread();