Example #1
0
        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;
        }
Example #2
0
        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;
        }