XBT_INFO("Completed a Comm");
if (sg_exec_isinstance(completed_one))
XBT_INFO("Completed an Exec");
+ sg_activity_unref(completed_one);
} else {
XBT_INFO("Nothing matches, test again in 0.5s");
sg_actor_sleep_for(.5);
XBT_INFO("Wait for asynchronous activities to complete, all in one shot.");
sg_activity_set_wait_all(pending_activities);
+ sg_activity_unref((sg_activity_t)exec);
+ sg_activity_unref((sg_activity_t)comm);
XBT_INFO("All activities are completed.");
free(payload);
XBT_INFO("Completed a Comm");
if (sg_exec_isinstance(completed_one))
XBT_INFO("Completed an Exec");
+ sg_activity_unref(completed_one);
completed_one = sg_activity_set_test_any(pending_activities);
}
}
XBT_INFO("Completed an Exec");
else
xbt_die("This activity set is supposed to only contain Comm or Exec");
+ sg_activity_unref(completed_one);
}
XBT_INFO("Last activity is complete");
free(payload);
XBT_PUBLIC sg_activity_t sg_activity_set_wait_any_for(sg_activity_set_t as, double timeout);
XBT_PUBLIC void sg_activity_set_delete(sg_activity_set_t as);
+/** You must call this function manually on activities extracted from an activity_set with waitany and friends */
+XBT_PUBLIC void sg_activity_unref(sg_activity_t acti);
+
SG_END_DECL
#endif /* INCLUDE_SIMGRID_ACTIVITY_SET_H */
{
delete as;
}
+void sg_activity_unref(sg_activity_t acti)
+{
+ acti->unref();
+}
SG_END_DECL