_schedule.remove_job((*_workload)[ended_job_id]);// Supprimer les tâches terminées de l'ordonnancement
}
std::vector<std::string>recently_queued_jobs;// Préparer une liste pour conserver les IDs des tâches récemment ajoutées à la file d'attente
for(conststring&new_job_id:_jobs_released_recently){// Parcourir les tâches récemment libérées et décider de les rejeter ou de les ajouter à la file d'attente
constJob*new_job=(*_workload)[new_job_id];
if(new_job->nb_requested_resources>_nb_machines){
_decision->add_reject_job(new_job_id,date);// Rejeter la tâche si elle demande plus de ressources que disponibles
}elseif(!new_job->has_walltime){
_decision->add_reject_job(new_job_id,date);// Rejeter la tâche si elle n'a pas de walltime défini
}else{
_queue->append_job(new_job,update_info);// Ajouter la tâche éligible à la file d'attente
recently_queued_jobs.push_back(new_job_id);
}
}
_schedule.update_first_slice(date);// Mettre à jour l'état actuel de l'ordonnancement
constJob*priority_job_after=nullptr;// Identifier la première tâche prioritaire après le tri et la mise à jour de la file
intnb_available_machines=_schedule.begin()->available_machines.size();// Calculer le nombre de machines disponibles actuellement
for(conststring&new_job_id:recently_queued_jobs){//exécuter les tâches récemment ajoutées à la file, en tenant compte de la disponibilité des ressources