// Already in the queue
}
}
+void BarrierAcquisitionImpl::post()
+{
+ finish();
+}
+
void BarrierAcquisitionImpl::finish()
{
xbt_assert(simcalls_.size() == 1, "Unexpected number of simcalls waiting: %zu", simcalls_.size());
for (auto const& acqui : ongoing_acquisitions_) {
acqui->granted_ = true;
if (acqui == acqui->get_issuer()->waiting_synchro_)
- acqui->finish();
+ acqui->post();
// else, the issuer is not blocked on this acquisition so no need to release it
}
ongoing_acquisitions_.clear(); // Rearm the barier for subsequent uses
bool test(actor::ActorImpl* issuer = nullptr) override;
void wait_for(actor::ActorImpl* issuer, double timeout) override;
- void post() override
- { /* no model action */
- }
+ void post() override;
void finish() override;
void set_exception(actor::ActorImpl* issuer) override
{ /* nothing to do */
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());
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 {
bool test(actor::ActorImpl* issuer = nullptr) override;
void wait_for(actor::ActorImpl* issuer, double timeout) override;
- void post() override
- { /* no model action */
- }
+ void post() override;
void finish() override;
void set_exception(actor::ActorImpl* issuer) override
{ /* nothing to do */