X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/5ed37babb2fa9097abe82df299c0aa259ed84d5a..13cf919b6231022290ec292eb1fb48abbb39f8eb:/src/kernel/activity/MutexImpl.cpp diff --git a/src/kernel/activity/MutexImpl.cpp b/src/kernel/activity/MutexImpl.cpp index 27a7bf9c00..1c9235b95c 100644 --- a/src/kernel/activity/MutexImpl.cpp +++ b/src/kernel/activity/MutexImpl.cpp @@ -25,11 +25,16 @@ void MutexAcquisitionImpl::wait_for(actor::ActorImpl* issuer, double timeout) this->register_simcall(&issuer_->simcall_); // Block on that acquisition if (mutex_->get_owner() == issuer_) { // I'm the owner - finish(); + post(); } else { // Already in the queue } } +void MutexAcquisitionImpl::post() +{ + finish(); +} + void MutexAcquisitionImpl::finish() { xbt_assert(simcalls_.size() == 1, "Unexpected number of simcalls waiting: %zu", simcalls_.size()); @@ -94,7 +99,7 @@ void MutexImpl::unlock(actor::ActorImpl* issuer) owner_ = acq->get_issuer(); if (acq == owner_->waiting_synchro_) - acq->finish(); + acq->post(); // else, the issuer is not blocked on this acquisition so no need to release it } else {