< prev index next >
src/share/vm/runtime/park.cpp
Print this page
@@ -146,19 +146,27 @@
// Do this the hard way -- materialize a new Parker..
p = new Parker() ;
}
p->AssociatedWith = t ; // Associate p with t
p->FreeNext = NULL ;
+ p->_counter = 0;
return p ;
}
void Parker::Release (Parker * p) {
if (p == NULL) return ;
guarantee (p->AssociatedWith != NULL, "invariant") ;
guarantee (p->FreeNext == NULL , "invariant") ;
- p->AssociatedWith = NULL ;
+
+ int status = pthread_mutex_lock(p->_mutex);
+ assert(status == 0, "invariant");
+ {
+ p->AssociatedWith = NULL;
+ }
+ pthread_mutex_unlock(p->_mutex);
+ assert(status == 0, "invariant");
Thread::SpinAcquire(&ListLock, "ParkerFreeListRelease");
{
p->FreeNext = FreeList;
FreeList = p;
< prev index next >