public String run_next(Time time, int tick) { String log_text = ""; if (cur_process != null){ cur_process.running(tick); if (cur_process.complexity.ToMsec() == cur_process.time_worked.ToMsec()) { log_text = log_text + " Process " + cur_process.id + " done! Time worked: " + cur_process.time_worked.ToString() + ".\n"; cur_process.solve(time); done_processes.Add(cur_process); processes_quiue.Remove(cur_process); cur_process = null; return log_text; } } else { if (processes_quiue.Count > 0){ cur_process = processes_quiue[0]; cur_process.run(time); cur_process.running(tick); log_text = log_text + " Process " + cur_process.id + " starts.\n"; } else { log_text = log_text + " Waiting for processes.\n"; } } return log_text; }
public String run_next(Time time, int tick) { String log_text = ""; if (cur_process != null){ cur_process.running(tick); if (cur_process.complexity.ToMsec() == cur_process.time_worked.ToMsec()) { log_text = log_text + " Process " + cur_process.id + " done! Time worked: " + cur_process.time_worked.ToString() + ".\n"; cur_process.solve(time); done_processes.Add(cur_process); processes_quiue.Remove(cur_process); cur_process = null; return log_text; } } if (cur_process == null){ if (processes_quiue.Count > 0){ cur_process = processes_quiue[0]; } } if (processes_quiue.Count > 0) { Process next_proc = processes_quiue.OrderBy((x) => (x.complexity.ToMsec() - x.time_worked.ToMsec())).First(); if (cur_process.id != next_proc.id) { log_text = log_text + " Process " + cur_process.id + " paused.\n"; cur_process.pause(); cur_process = next_proc; if (next_proc.state == 0) { next_proc.run(time); next_proc.running(tick); log_text = log_text + " NEXT: new task " + next_proc.id + " remain work: " + (cur_process.complexity - cur_process.time_worked).ToString() + ".\n"; } else { if (next_proc.state == 2) { next_proc.resume(time); log_text = log_text + " NEXT: paused task " + next_proc.id + " remain work: " + (cur_process.complexity - cur_process.time_worked).ToString() + ".\n"; } else { log_text = log_text + " Unexpected state detected.\n"; } } } } return log_text; }