changed to properly unregister conds from actions now.
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/simgrid/simgrid/trunk@4100
48e7efb5-ca39-0410-a469-
dd3cf9ba447f
int smpi_run_simulation(int argc, char **argv)
{
int smpi_run_simulation(int argc, char **argv)
{
+ xbt_fifo_item_t cond_item = NULL;
smx_cond_t cond = NULL;
smx_action_t action = NULL;
smx_cond_t cond = NULL;
smx_action_t action = NULL;
while (SIMIX_solve(actions_done, actions_failed) != -1.0) {
while ((action = xbt_fifo_pop(actions_failed))) {
DEBUG1("** %s failed **", action->name);
while (SIMIX_solve(actions_done, actions_failed) != -1.0) {
while ((action = xbt_fifo_pop(actions_failed))) {
DEBUG1("** %s failed **", action->name);
- while ((cond = xbt_fifo_pop(action->cond_list))) {
+ xbt_fifo_foreach(action->cond_list, cond_item, cond, smx_cond_t) {
SIMIX_cond_broadcast(cond);
SIMIX_cond_broadcast(cond);
+ SIMIX_unregister_action_to_condition(action, cond);
}
SIMIX_action_destroy(action);
}
while ((action = xbt_fifo_pop(actions_done))) {
DEBUG1("** %s done **",action->name);
}
SIMIX_action_destroy(action);
}
while ((action = xbt_fifo_pop(actions_done))) {
DEBUG1("** %s done **",action->name);
- while ((cond = xbt_fifo_pop(action->cond_list))) {
+ xbt_fifo_foreach(action->cond_list, cond_item, cond, smx_cond_t) {
SIMIX_cond_broadcast(cond);
SIMIX_cond_broadcast(cond);
+ SIMIX_unregister_action_to_condition(action, cond);
}
SIMIX_action_destroy(action);
}
}
SIMIX_action_destroy(action);
}