- for (std::set<SD_task_t>::iterator it=task->successors->begin(); it!=task->successors->end(); ++it){
- dst=*it;
- dst->unsatisfied_dependencies--;
- if (dst->is_not_ready > 0)
- dst->is_not_ready--;
- XBT_DEBUG("Released a dependency on %s: %d remain(s). Became schedulable if %d=0",
- SD_task_get_name(dst), dst->unsatisfied_dependencies, dst->is_not_ready);
- if (dst->unsatisfied_dependencies == 0) {
- if (SD_task_get_state(dst) == SD_SCHEDULED)
- SD_task_set_state(dst, SD_RUNNABLE);
- else
- SD_task_set_state(dst, SD_SCHEDULABLE);
- }
+ for (std::set<SD_task_t>::iterator succ = task->successors->begin(); succ != task->successors->end(); ++succ){
+ (*succ)->predecessors->erase(task);
+ (*succ)->inputs->erase(task);
+ XBT_DEBUG("Release dependency on %s: %zu remain(s). Becomes schedulable if %zu=0", SD_task_get_name((*succ)),
+ (*succ)->predecessors->size()+(*succ)->inputs->size(), (*succ)->predecessors->size());