X-Git-Url: http://bilbo.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/4de2a148bea34f550b79c07fb5e80ac36e6aa0e9..13cf919b6231022290ec292eb1fb48abbb39f8eb:/src/kernel/activity/MutexImpl.cpp diff --git a/src/kernel/activity/MutexImpl.cpp b/src/kernel/activity/MutexImpl.cpp index ca13b38c0b..1c9235b95c 100644 --- a/src/kernel/activity/MutexImpl.cpp +++ b/src/kernel/activity/MutexImpl.cpp @@ -1,4 +1,4 @@ -/* Copyright (c) 2007-2022. The SimGrid Team. All rights reserved. */ +/* Copyright (c) 2007-2023. The SimGrid Team. All rights reserved. */ /* This program is free software; you can redistribute it and/or modify it * under the terms of the license (GNU LGPL) which comes with this package. */ @@ -8,9 +8,7 @@ XBT_LOG_NEW_DEFAULT_SUBCATEGORY(ker_mutex, ker_synchro, "Mutex kernel-space implementation"); -namespace simgrid { -namespace kernel { -namespace activity { +namespace simgrid::kernel::activity { /* -------- Acquisition -------- */ @@ -27,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()); @@ -96,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 { @@ -106,6 +109,4 @@ void MutexImpl::unlock(actor::ActorImpl* issuer) XBT_OUT(); } -} // namespace activity -} // namespace kernel -} // namespace simgrid +} // namespace simgrid::kernel::activity