Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
know whether an activity has solved all its dependencies
authorSUTER Frederic <frederic.suter@cc.in2p3.fr>
Tue, 14 Dec 2021 16:28:58 +0000 (17:28 +0100)
committerSUTER Frederic <frederic.suter@cc.in2p3.fr>
Tue, 14 Dec 2021 16:29:39 +0000 (17:29 +0100)
include/simgrid/s4u/Activity.hpp

index 0b87eb5..0e165e7 100644 (file)
@@ -41,7 +41,7 @@ protected:
   virtual ~Activity() = default;
 
   virtual bool is_assigned() const = 0;
-
+  virtual bool dependencies_solved() { return dependencies_.empty(); }
   virtual void complete(Activity::State state)
   {
     state_ = state;
@@ -55,7 +55,7 @@ protected:
       ActivityPtr b = successors_.back();
       XBT_CVERB(s4u_activity, "Remove a dependency from '%s' on '%s'", get_cname(), b->get_cname());
       b->dependencies_.erase(this);
-      if (b->dependencies_.empty()) {
+      if (b->dependencies_solved()) {
         b->vetoable_start();
       }
       successors_.pop_back();
@@ -91,7 +91,7 @@ public:
   void vetoable_start()
   {
     state_ = State::STARTING;
-    if (dependencies_.empty() && is_assigned()) {
+    if (dependencies_solved() && is_assigned()) {
       XBT_CVERB(s4u_activity, "'%s' is assigned to a resource and all dependencies are solved. Let's start", get_cname());
       start();
     }