mirror of
https://github.com/corda/corda.git
synced 2025-01-03 19:54:13 +00:00
check again for entry in monitorMap after entering the exclusive state in objectMonitor() in case another thread beat us to creating a monitor for the object
This commit is contained in:
parent
d24b633665
commit
d8374a76e2
@ -2715,6 +2715,17 @@ objectMonitor(Thread* t, object o, bool createNew)
|
||||
|
||||
ENTER(t, Thread::ExclusiveState);
|
||||
|
||||
p = hashMapFind(t, t->m->monitorMap, o, objectHash, objectEqual);
|
||||
if (p) {
|
||||
if (DebugMonitors) {
|
||||
fprintf(stderr, "found monitor %p for object %x\n",
|
||||
static_cast<System::Monitor*>(pointerValue(t, p)),
|
||||
objectHash(t, o));
|
||||
}
|
||||
|
||||
return static_cast<System::Monitor*>(pointerValue(t, p));
|
||||
}
|
||||
|
||||
System::Monitor* m;
|
||||
System::Status s = t->m->system->make(&m);
|
||||
expect(t, t->m->system->success(s));
|
||||
|
Loading…
Reference in New Issue
Block a user