+ if (SD_task_get_state((*succ)) == SD_RUNNABLE && !sd_global->watch_point_reached) {
+ XBT_VERB("Executing task '%s'", SD_task_get_name((*succ)));
+ SD_task_run((*succ));
+ }
+ }
+ task->successors->clear();
+
+ for (std::set<SD_task_t>::iterator it=task->outputs->begin(); it!=task->outputs->end(); ++it){
+ dst=*it;
+ dst->start_time = task->finish_time;
+ dst->predecessors->erase(task);
+ if (SD_task_get_state(dst) == SD_SCHEDULED)
+ SD_task_set_state(dst, SD_RUNNABLE);
+ else
+ SD_task_set_state(dst, SD_SCHEDULABLE);
+
+ SD_task_t comm_dst = *(dst->successors->begin());
+ if (SD_task_get_state(comm_dst) == SD_NOT_SCHEDULED && comm_dst->predecessors->empty()){
+ XBT_DEBUG("%s is a transfer, %s may be ready now if %zu=0",
+ SD_task_get_name(dst), SD_task_get_name(comm_dst), comm_dst->predecessors->size());
+ SD_task_set_state(comm_dst, SD_SCHEDULABLE);
+ }