Exemplo n.º 1
0
 public void PushTask()
 {
     if (TaskManager.ProgramTasks.Peek().AvailableProcessors.Contains(Id))
     {
         ProcessorTask task = TaskManager.ProgramTasks.Dequeue();
         ProcessTask(task);
     }
 }
Exemplo n.º 2
0
 public void ProcessTask(ProcessorTask task)
 {
     ProgramForm.SetDataGridValue("state", DataGridRowIndex, "WORK");
     IsReady = false;
     task.ProcessTask(this);
     OperationsDone += task.CountOperationsDone;
     TasksDone++;
     ProgramForm.SetDataGridValue("countTasksDone", DataGridRowIndex, TasksDone.ToString());
     ProgramForm.SetDataGridValue("countOperationsDone", DataGridRowIndex, OperationsDone.ToString());
     IsReady = true;
     ProgramForm.SetDataGridValue("state", DataGridRowIndex, "WAIT");
 }
Exemplo n.º 3
0
 public void ProcessTaskByParts(ProcessorTask task)
 {
     ProgramForm.SetDataGridValue("state", DataGridRowIndex, "WORK");
     IsReady = false;
     task.ProcessTaskByParts(this);
     OperationsDone += task.CountOperationsDone;
     if (task.IsCompleted)
     {
         TasksDone++;
         ProcessorTasks.Dequeue();
         ProgramForm.SetDataGridValue("countTasksDone", DataGridRowIndex, TasksDone.ToString());
         ProgramForm.SetDataGridValue("countOperationsDone", DataGridRowIndex, OperationsDone.ToString());
     }
     IsReady = true;
     ProgramForm.SetDataGridValue("state", DataGridRowIndex, "WAIT");
 }
Exemplo n.º 4
0
 public void SheduleQueue()//Sheduler
 {
     while (ProgramForm.Ticks < ProgramForm.TimeWorking)
     {
         if (TaskManager.ProgramTasks.Count != 0)
         {
             ProcessorTask           task            = TaskManager.ProgramTasks.Dequeue();
             KeyValuePair <int, int> unloadedProcess = new KeyValuePair <int, int>(0, 0);
             foreach (var kvp in Processes)
             {
                 if (task.AvailableProcessors.Contains(kvp.Key))
                 {
                     if (unloadedProcess.Key == 0 || unloadedProcess.Value > kvp.Value.ProcessorTasks.Count)
                     {
                         unloadedProcess = new KeyValuePair <int, int>(kvp.Key, kvp.Value.ProcessorTasks.Count);
                     }
                 }
             }
             Processes[unloadedProcess.Key].PushTask(task);
         }
     }
 }
Exemplo n.º 5
0
        public void SheduleAndProcessQueue()
        {
            //while(TaskManager.TotalTaskDone < TaskManager.TotalTaskDo)
            while (ProgramForm.Ticks < ProgramForm.TimeWorking)
            {
                if (Form1.Mode == Form1.Modes.WithCustomWorkingSheduler)
                {
                    if (TaskManager.ProgramTasks.Count != 0)
                    {
                        mode = "shedule";
                    }
                    else
                    {
                        mode = "queue";
                    }
                }

                if (TaskManager.ProgramTasks.Count != 0 && mode == "shedule")
                {
                    ProcessorTask           task            = TaskManager.ProgramTasks.Dequeue();
                    KeyValuePair <int, int> unloadedProcess = new KeyValuePair <int, int>(0, 0);
                    foreach (var kvp in Processes)
                    {
                        if (task.AvailableProcessors.Contains(kvp.Key))
                        {
                            if (unloadedProcess.Key == 0 || unloadedProcess.Value > kvp.Value.ProcessorTasks.Count)
                            {
                                unloadedProcess = new KeyValuePair <int, int>(kvp.Key, kvp.Value.ProcessorTasks.Count);
                            }
                        }
                    }
                    Processes[unloadedProcess.Key].PushTask(task);
                }
                else if (ProcessorTasks.Count != 0 && IsReady && mode == "queue")
                {
                    ProcessTaskByParts(ProcessorTasks.Peek());
                }
            }
        }
Exemplo n.º 6
0
 public void CreateTask(ProcessorTask task)
 {
     ProgramTasks.Enqueue(task);
 }
Exemplo n.º 7
0
 public void PushTask(ProcessorTask task)
 {
     ProcessorTasks.Enqueue(task);
 }