return false;
}
+bool ActorJoinTransition::reversible_race(const Transition* other) const
+{
+ switch (type_) {
+ case Type::ACTOR_JOIN:
+ // ActorJoin races with another event iff its target `T` is the same as
+ // the actor executing the other transition. Clearly, then, we could not join
+ // on that actor `T` and then run a transition by `T`, so no race is reversible
+ return false;
+ default:
+ xbt_die("Unexpected transition type %s", to_c_str(type_));
+ }
+}
+
ActorSleepTransition::ActorSleepTransition(aid_t issuer, int times_considered, std::stringstream& stream)
: Transition(Type::ACTOR_SLEEP, issuer, times_considered)
{
return false;
}
+bool ActorSleepTransition::reversible_race(const Transition* other) const
+{
+ switch (type_) {
+ case Type::ACTOR_SLEEP:
+ return true; // Always enabled
+ default:
+ xbt_die("Unexpected transition type %s", to_c_str(type_));
+ }
+}
+
} // namespace simgrid::mc